标签:python
1:字典:是无序的数据类型,他是由key:value组合。由于无序,所以没有下标获取value。通过:dict[key]来获取元素的value。
当字典的key重复时候,字典会自动去重复的key。
如下:当字典重复的key值时自动保留最后一个重复的key:value:
a={2:‘a‘,2:‘b‘,3:‘c‘} print(a) {2: ‘b‘, 3: ‘c‘}
2:字典的key值必须是可hash。字典的value可以是:变量、字典、列表。
name=input(‘what is your name?:‘) a={ ‘name‘:name, ‘info‘:{‘age‘:22,‘addr‘:‘liaoning‘}, ‘favorite‘:[‘football‘,‘pingpang‘] } print(a) what is your name?:evil {‘info‘: {‘addr‘: ‘liaoning‘, ‘age‘: 22}, ‘favorite‘: [‘football‘, ‘pingpang‘], ‘name‘: ‘evil‘}
构造如下字典:
3:字典常用操作:
id_db={ 1133334:{‘name‘:‘evil‘,‘age‘:22,‘addr‘:‘;liaoning‘}, 2334455:{‘name‘:‘tom‘,‘age‘:23,‘addr‘:‘beijing‘} } #print dict id_db.keys print(id_db.keys()) dict_keys([1133334, 2334455]) #print dict id_db.values print(id_db.values()) dict_values([{‘age‘: 22, ‘addr‘: ‘;liaoning‘, ‘name‘: ‘evil‘}, {‘age‘: 23, ‘addr‘: ‘beijing‘, ‘name‘: ‘tom‘}]) #打印id_db key值为:2334455的value的小字典的key值为name的value。 print(id_db[2334455][‘name‘]) tom #删除为key=1133334的元素。 del id_db[1133334] print(id_db) {2334455: {‘age‘: 23, ‘addr‘: ‘beijing‘, ‘name‘: ‘tom‘}} #如果key值为111的元素不村子,那么插入key:value=111:‘jhon‘的元素。 id_db[111]=‘jhon‘ {111: ‘jhon‘, 1133334: {‘addr‘: ‘;liaoning‘, ‘name‘: ‘evil‘, ‘age‘: 22}, 2334455: {‘addr‘: ‘beijing‘, ‘name‘: ‘tom‘, ‘age‘: 23}} ###如果字典中key值存在,那么将覆盖该key值之前的value。 id_db[2334455]=‘joker‘ print(id_db) {1133334: {‘addr‘: ‘;liaoning‘, ‘age‘: 22, ‘name‘: ‘evil‘}, 2334455: ‘joker‘}
4:如何获取字典的对应的key的value呢?
#常用如下操作: dict2={ ‘name‘:‘evil‘, ‘age‘:22 } #如果key在key值不存在的情况下: #print(dict2[‘addr‘]) #会抛出异常: #KeyError: ‘addr‘ #为了避免程序出现这种情况。字典本身有个函数get()。可以定义在key值不存在的情况下,不抛出异#常。可以自定义在key值不存在的情况下输出我们定义的value,默认None print(dict2.get(‘addr‘,‘this key is not exits‘)) this key is not exits
5:如何判断字典的key值是否存在?
可以用 key in dict来判断。
上个字典判断key值123是否在dict2中。 print(123 in dict2) False
6:字典的setdefault(key,default=value)函数
如果字典相应的key值不存在的情况,会默认插入这个key:value.如果字典相应的key值存在将会输出相应的key:value.如上字典。
dict2.setdefault(‘age‘,‘33‘) print(dict2) {‘name‘: ‘evil‘, ‘age‘: 22} 不存在的key值,将会插入到字典当中 dict2.setdefault(‘adrr‘,‘liaoning‘) print(dict2) {‘name‘: ‘evil‘, ‘adrr‘: ‘liaoning‘, ‘age‘: 22} print(dict2.get(‘id‘,‘this is not exits‘)) {‘name‘: ‘evil‘, ‘adrr‘: ‘liaoning‘, ‘age‘: 22} 而get()函数并不修改当key值不存在的情况的下得字典
7:字典的fromkeys()函数。
a={2:‘a‘} print(a.fromkeys([1,2,3],‘a‘)) print(a) {1: ‘a‘, 2: ‘a‘, 3: ‘a‘} {2: ‘a‘}
8:字典的popitem()函数。随机删除一对key:value.
a={8:‘a‘,3:‘b‘,4:‘c‘,5:‘d‘,6:‘r‘} a.popitem() print(a) {3: ‘b‘, 4: ‘c‘, 5: ‘d‘, 6: ‘r‘}##由于元素少,导致没试出来随机删除情况。因为字典本身是无序。所以这种只能随机删除。
9:字典的pop(key,d=None)函数。
指定删除相应的key:value.如果d不设置会报KeyError。
a={8:‘a‘,3:‘b‘,4:‘c‘,5:‘d‘,6:‘r‘} a.pop(8) print(a) {3: ‘b‘, 4: ‘c‘, 5: ‘d‘, 6: ‘r‘}
10:如何输出字典的key和value。
1:
a={8:‘a‘,3:‘b‘,4:‘c‘,5:‘d‘,6:‘r‘} for k,v in a.items(): print(k,v) 8 a 3 b 4 c 5 d 6 r #这种输出字典的key value 效率较低。因为有一个dict to list
高效率的方法:
for k in a: print(k,a[k]) 8 a 3 b 4 c 5 d 6 r
标签:python
原文地址:http://8118556.blog.51cto.com/8108556/1773762