python教程-(四)当索引行不通时(python字典)

一、创建和使用字典

1.函数dict

#字典表示方式如下
>>> phonebook = {'tom':'18616271234',"Jim":"18612345678"}
>>> phonebook['tom']
'18616271234'

#函数dict
>>> items = [('name','tom'),("age","20")]
>>> d = dict(items)
>>> d
{'name': 'tom', 'age': '20'}

>>> d = dict(name="tom",age="20")
>>> d
{'name': 'tom', 'age': '20'}

2.基本的字典操作

len(d) 返回字典的项数

d[k] 返回键k对应的值

d[k]=v 将值v赋予键k

del d[k] 删除键为k的项

k in d 检查字典中是否包含键k

>>> wolaile={"name":"Tom","age":26,"address":"shanghai"}
>>> wolaile
{'name': 'Tom', 'age': 26, 'address': 'shanghai'}
>>> wolaile["address"]
'shanghai'
>>> wolaile["address"]="beijing"
>>> wolaile
{'name': 'Tom', 'age': 26, 'address': 'beijing'}
>>> wolaile["sex"]="man"
>>> wolaile
{'name': 'Tom', 'age': 26, 'address': 'beijing', 'sex': 'man'}
>>> del wolaile["sex"]
>>> wolaile
{'name': 'Tom', 'age': 26, 'address': 'beijing'}
>>> "age" in wolaile
True
>>> "sex" in wolaile
False
#字典示例
people={
        "Tom":{"phone":1234, "addr":"shanghai"},
        "Jim":{"phone":5678, "addr":"beijing"},
        "Lily":{"phone":1590, "addr":"shenzhen"}

    }
labels={
        "phone":"phone number",
        "addr":"address"
    }
name=input("Name: ")
request=input("phone number (p) or address (a)?")

if request == 'p' : key='phone'
if request == 'a' : key = 'addr'

if name in people: print("{}'s {} is {}".format(name, labels[key], people[name][key]))

3.将字符串格式设置功能用于字典

>>> phonebook={"Jim":"123123","Tom":"121231"}
>>> "Tom's phone number is {Tom}".format_map(phonebook)
"Tom's phone number is 121231"
>>> template="""<html><head><title>{title}</title></head><body><h1>{title}</h1><p>{text}</p></body>"""
>>> data={"title":"wolaile","text":"woyoulaile"}
>>> template.format_map(data)
'<html><head><title>wolaile</title></head><body><h1>wolaile</h1><p>woyoulaile</p></body>'

4.字典方法

#clear 清空
>>> x={}
>>> y=x
>>> x["key"]="value"
>>> x
{'key': 'value'}
>>> y
{'key': 'value'}
>>> x={}
>>> x
{}
>>> y
{'key': 'value'}
#使用clear方法后
>>> x = {}
>>> y = x
>>> x
{}
>>> y
{}
>>> x["key"]="value"
>>> x
{'key': 'value'}
>>> y
{'key': 'value'}
>>> x.clear()
>>> x
{}
>>> y
{}
#copy和deepcopy
#copy浅复制
>>> x = {"username":"tom", "extendinfo":["age","salary","sex"]}
>>> x
{'username': 'tom', 'extendinfo': ['age', 'salary', 'sex']}
>>> y = x.copy()
>>> y
{'username': 'tom', 'extendinfo': ['age', 'salary', 'sex']}
>>> y["username"] = "Jim"
>>> y["extendinfo"].remove("sex")
>>> y
{'username': 'Jim', 'extendinfo': ['age', 'salary']}
>>> x
{'username': 'tom', 'extendinfo': ['age', 'salary']}

#deepcopy深复制
>>> from copy import deepcopy
>>> d={}
>>> d["username"] = ['Lucy','Lily']
>>> d
{'username': ['Lucy', 'Lily']}
>>> c = d.copy()
>>> dc = deepcopy(d)
>>> d["username"].append("Tom")
>>> c
{'username': ['Lucy', 'Lily', 'Tom']}
>>> dc
{'username': ['Lucy', 'Lily']}
>>> 
#fromkeys 创建一个新字典,包含指定的key,每个key默认值是None
>>> {}.fromkeys(["username","phone"])
{'username': None, 'phone': None}
>>> dict.fromkeys(["username","phone"])
{'username': None, 'phone': None}
>>> dict.fromkeys(["username","phone"],"x")
{'username': 'x', 'phone': 'x'}
#items 返回一个包含所有字典项的列表
>>> d={"title":"CTO","username":"Jim","addr":"shanghai"}
>>> d.get("title")
'CTO'
>>> d.get("title","unknown")
'CTO'
>>> d.get("salary","unknown")
'unknown'
>>> d.items()
dict_items([('title', 'CTO'), ('username', 'Jim'), ('addr', 'shanghai')])
>>> it = d.items()
>>> len(it)
3
>>> ("title","CTO") in it
True
>>> d["username"]="Lucy"
>>> it
dict_items([('title', 'CTO'), ('username', 'Lucy'), ('addr', 'shanghai')])
>>> list(d.items())
[('title', 'CTO'), ('username', 'Lucy'), ('addr', 'shanghai')]
#keys方法返回字典的所有key
>>> d
{'title': 'CTO', 'username': 'Lucy', 'addr': 'shanghai'}
>>> d.keys()
dict_keys(['title', 'username', 'addr'])
>>> ki = d.keys()
>>> ki
dict_keys(['title', 'username', 'addr'])

#pop方法,删除指定的键值对
>>> d.pop("title")
'CTO'
>>> d
{'username': 'Lucy', 'addr': 'shanghai'}
>>> 
#setdefault方法,如果键不存在,则返回指定的值,如果键存在,返回其值
>>> d
{'username': 'Lucy', 'addr': 'shanghai'}
>>> d.setdefault("username")
'Lucy'
>>> d
{'username': 'Lucy', 'addr': 'shanghai'}
>>> d.setdefault("age",18)
18
>>> d
{'username': 'Lucy', 'addr': 'shanghai', 'age': 18}

#update 更新指定的key的value
>>> d
{'username': 'Lucy', 'addr': 'shanghai', 'age': 18}
>>> e={"addr":"beijing"}
>>> d.update(e)
>>> d
{'username': 'Lucy', 'addr': 'beijing', 'age': 18}
>>> 

#values 返回字段的value值
>>> d
{'username': 'Lucy', 'addr': 'beijing', 'age': 18}
>>> d.values()
dict_values(['Lucy', 'beijing', 18])
>>> 

 

posted @ 2019-06-02 15:20  大海lhc  阅读(236)  评论(0编辑  收藏  举报