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]) >>>