2017-10-25
字典的键 ①是可哈希(不可变的数据类型:字符串,数字,元组(有待商榷),bool值)的 ②唯一
dict1 = {'name':'sunv','age':18}
dict2 = {'name':'lixio','job':'666'}
增:
dict1['class']='four' # 没有的则添加,有的是覆盖
dict1.setdefault('hobbie','haha') # 如果hobbie存在,则dict1不变;若无则添加,
默认None,否则‘haha
dict1.update(dict2) # 用dict2中的元素更新dict1,有:覆盖; 无:添加
print(dict1) ### {'name': 'lixio', 'age': 18, 'job': '666'}
print(dict2) ###{'name': 'lixio', 'job': '666'}
删:
print(dict1.pop('hhh','没有hhh')) # 若没有'hhh',则返回 没有hhh,若不写(没有hhh)则报错!
dict1.popitem() # 随机删除某个键值对
dict1.clear() # 清空
del dict1['name'] # 删 name 这个键值对
改:(覆盖已有的键)
dict1.update(dict2)
dict1['name'] = 'xiao' # 改变原有值
查:
print(dict1['name']) ### lixiao 若dict1中没有,则报错
dict1.get('jisdjsnai','默认是None')# 判断元素在不在 # 找不到返回'默认是None
其他操作:
print(dict1.keys()) # ## dict_keys(['name', 'age'])
for i in dict1:
print(i) # ##打印键 name age
a,b = [5,9]
print(a,b) # ##5 9 所以键值对也可以这样赋值
dict1.items() # 打印出键值对
for key,value in dict1.items():
print(key,":",value) # ##name : sunv age : 18
fromkeys:
①列表
dict1 = dict.fromkeys([1,2,3],'梦样')
print(dict1) # ##{1: '梦样', 2: '梦样', 3: '梦样'}
dict2 = dict.fromkeys(['芳华绝代','缘份'],[])
dict2['芳华绝代'].append('张国荣')
dict2['缘份'].append('梅艳芳')
print(dict2) ###{'芳华绝代': ['张国荣', '梅艳芳'], '缘份': ['张国荣', '梅艳芳']}
②字符串
dict3 = dict.fromkeys(('张国荣'),'帅')
print(dict3) # {'张': '帅', '国': '帅', '荣': '帅'}
③元组
dict3 = dict.fromkeys(('张敬轩','lin'),'6')
print(dict3) # {'张敬轩': '6', 'lin': '6'}
把sunv变成Sunv:
dict3 = {'name':['sunv','lixiao',59]}
dict3['name'][0] = dict3['name'][0].capitalize()
print(dict3) # ## {'name': ['Sunv', 'lixiao', 59]}
补充:
列表:当循环列表时,如果在循环中删除某个或者某些元素,列表元素个数改变,索引改变,容易出错。
字典:当循环字典时,如果在循环中删除某个或者某些键值对,字典的键值对个数改变,长度改变,容易出错
可循环列表,删字典的键:
dict4 = {'k1':'barry','张敬轩':'故园花茶','k2':'alex'}
a = dict4.keys()
for i in list(a):
if 'k' in i:
del dict4[i]
print(dict4) # ##{'张敬轩': '故园花茶'}