字典
python中唯一具有映射关系的数据类型: 字典的查询效率高于列表
能将元组变成字典 dict((1,2),(3,4))
d={[1,2,3]:"yuan","name":"egon"}
键唯一且为不可变数据类型,key值相同,要覆盖
list是unhashable类型,是可变类型
key 必须唯一 字典是无序的 names = { 3714811995053432: {"name":"Alex Li", "age":22}, 11023232323: {"name":"Jack Li", "age":52}, 111: ["rain"], 112: ["rain"], 115: ["rain115"], 118: ["rain from name1"], } dict2 = { 118: ["rain"], 113: ["rain"], } names.update(dict2) #合并两个字典,如果key有相同的则会覆盖 # 改 names[111][0] = "QinZhen" #修改 names[111].append(28) #追加value的值 names[222] = "mike" #没有响应的key值,则添加 names.setdefault('Age',7) #添加 # 删 print(names.pop(118)) #删除指定的key,返回value print(names.pop(11000,None)) #删除指定的key,没有则返回None print(names.popitem()) #默认删除最后一个,返回删除的key,value没有就报错
del names[112] #查 print(names) #所有 print(names[112]) print(names.get(113)) #查询key对应的value,如果内没有相应的key,返回None print(113 in names) #判断是否在字典里有这个key,返回布尔值 print(names.keys()) #返回值是列表,需要list转化后才能取值 print(names.values())
print(list(names.keys())) #强制转化成列表
v=names.get("names11",None) #推荐,取不到时,赋予None值
print(v)
for i in names: print(i, names[i] ) #遍历字典
for k,v in names.items(): #不要用 ,效率低 print(k,v) #遍历字典
浅拷贝例子:
account = { 'name':'秦镇', 'id':1234, 'info' : [200, 10 ] } account2 = account.copy() #复制一个新的字典,属于浅拷贝 account2['name'] ="骗子" #修改字典的值 account["info"][1] += 30 print(account,account2) #两个字典中key对应的列表中的值都变了,应用银行的副卡
创建字典:
info = {} info= info.fromkeys([1,2,3],{}) fromkey方法,创建一个新的字典,fromkeys(可迭代序列作为键值,键对应的初始值) print(info) 结果{1: {}, 2: {}, 3: {}} 或者 a = {1,2} b=dict.fromkeys(a) # a可以为列表、集合、元组 print b 结果:{1: None, 2: None}
字典排序:
1.sorted函数按key值对字典排序
先来基本介绍一下sorted函数,sorted(iterable,key,reverse),sorted一共有iterable,key,reverse这三个参数。
其中iterable表示可以迭代的对象,例如可以是dict.items()、dict.keys()等,key是一个函数,用来选取参与比较的元素,
reverse则是用来指定排序是倒序还是顺序,reverse=true则是倒序,reverse=false时则是顺序,默认时reverse=false。
2.sorted函数按value值对字典排序 要对字典的value排序则需要用到key参数,在这里主要提供一种使用lambda表达式的方法,如下: