Python——字典dict

 dict的优势和限制:

1,键必须是可散列的;

2,字典在内存上的开销巨大;

3,键查询很快;

dict的实现是典型的空间换时间:字典类型有着巨大的内存开销,但它们提供了无视数据量大小的快速访问——只要字典能被装在内存里。

 

注意事项:

1,不要对字典同时进行迭代和修改;

如果想扫描并修改一个字典,最好分成两步来进行:首先对字典迭代,以得出需要添加的内容,把这些内容放在一个新字典里;迭代结束之后再对原有字典进行更新。

2,在Python 3中,.keys( )、.items( )和.values( )方法返回的都是字典视图。也就是说,这些方法返回的值更像集合,而不是像Python 2那样返回列表。

视图还有动态的特性,它们可以实时反馈字典的变化。

 

应用:

1,对字典dict使用max函数;

2,

 

字典:

 

 

collections.defalutdict

 

 

 

 

查看下面代码运行结果

 1 cities={
 2     '北京':{
 3         '朝阳':['国贸','CBD','天阶','我爱我家','链接地产'],
 4         '海淀':['圆明园','苏州街','中关村','北京大学'],
 5         '昌平':['沙河','南口','小汤山',],
 6         '怀柔':['桃花','梅花','大山'],
 7         '密云':['密云A','密云B','密云C']
 8     },
 9     '河北':{
10         '石家庄':['石家庄A','石家庄B','石家庄C','石家庄D','石家庄E'],
11         '张家口':['张家口A','张家口B','张家口C'],
12         '承德':['承德A','承德B','承德C','承德D']
13     }
14 }
15 
16 
17 
18 print(cities["北京"])
19 print(type(cities["北京"]))
20 
21 
22 #默认cities['北京']是遍历键keys, cities['北京']的结果仍然是一个字典dict
23 for i in cities['北京']:
24     print(i)
25 
26 
27 for i in cities['北京'].items():
28     print(i)
29     
30 for i in cities['北京'].values():
31     print(i)

 

 

 字典交换key,value

# 字典可以通过以下方法调换 key和 value,当然要注意原始 value 的类型,必须是不可变类型:
d = {'a': 1, 'b': 2, 'c': 3}

reverse = {v: k for k, v in d.items()}

print(d)
print(reverse)

 

prices = {
    'A':123,
    'B':450.1,
    'C':12,
    'E':444,}


#网友方法:这种是把value转换成了
max_prices = max(zip(prices.values(), prices.keys()))
print(max_prices) # (450.1, 'B')


print("\n个人方法:")
#返回最大的键
print('默认是Keys()结果中的最大值:',max(prices))  
print('Keys()结果中的最大值: ',max(prices.keys()))  
print('values()结果中的最大值: ', max(prices.values()))
print('items()结果中的最大值: ',max(prices.items()))

 

 

 

 

 

max(dic)返回字典中最大的Key值,max(dic,key=dic.get)返回字典中最大值values对应的key

#max(dic)返回字典中最大的Key值,max(dic,key=dic.get)返回字典中最大值values对应的key

dic1={'a':4,'b':19,'c':2,'d':13}

mask=max(dic1)
mask2=max(dic1,key=dic1.get)

print("\n该例子的字典为:{'a':4,'b':19,'c':2,'d':13}")
print("\nmax(dic)返回的结果:",mask)
print("max(dic,key=dic.get)返回的结果:",mask2)



dic2={'a':4,'b':19,'e':2,'d':22}

mask2=max(dic2)
mask22=max(dic2,key=dic2.get)

print("\n-------------------------------------------")
print("该例子的字典为:{'a':4,'b':19,'c':2,'d':13}\n")
print("max(dic)返回的结果:",mask2)
print("max(dic,key=dic.get)返回的结果:",mask22)

结果:

 

 END

 

posted @ 2020-04-21 00:11  limalove  阅读(2977)  评论(0编辑  收藏  举报