您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息
三六零分类信息网 > 菏泽分类信息网,免费分类信息发布

Python字典操作技巧

2023/11/15 21:59:33发布36次查看
一、如何让字典保持有序
可以使用collections模块中的ordereddict类,ordereddict内部维护了一个双向链表,它会根据元素加入的顺序来排列键的位置,大小是普通字典的2倍多,所以,在使用时要做好需求分析。
from collections import ordereddictd=ordereddict() d['a']=1d['b']=2d['c']=3d['d']=4for key in d:print(key,d[key])
输出结果:
a 1b 2 c 3 d 4 [finished in 0.2s]
二、如何对字典求最大值、最小值:
为了对字典内容做有用的计算,通常会利用zip()将字典的键和值反转过来:
prices={'a':50.3,'b':12.3,'c':15.98,'d':10.75 }min_price=min(zip(prices.values(),prices.keys()))max_price=max(zip(prices.values(),prices.keys()))print(min_price)print(max_price)
输出结果:
(10.75, 'd')(50.3, 'a')[finished in0.2s]
三、如何找到两个字典中相同的地方:
python字典keys()方法同items()方法,返回的是keys-view对象,它们支付常见的集合操作如并,交,差;但values()方法不支持。
x={ 'a':1, 'b':5, 'c':10}y={ 'd':2, 'b':5, 'c':8}re_a=x.keys() & y.keys()print('x,y中均有的键是:',re_a)re_b=x.keys() - y.keys()print('x中有但y中没有的键是:',re_b)re_c=x.items() & y.items()print('x,y中相同的键值对:',re_c)
输出结果:
x,y中均有的键是: {'c', 'b'}x中有但y中没有的键是: {'a'}x,y中相同的键值对: {('b', 5)}[finished in0.1s]
五、如何通过公共键对字典列表排序
利用operator模块中的itemgetter函数排序非常简单假设我们从数据库中获得的数据如下:
rows=[{'fname':'brian','lname':'jones','age':18},{'fname':'david','lname':'beazley','age':25},{'fname':'john','lname':'clesse','age':19},{'fname':'bim','lname':'jones','age':23}]
我们对以上记录进行排序非常简单:
from operator import itemgetterrows_by_fname=sorted(rows,key=itemgetter('fname'))rows_by_age=sorted(rows,key=itemgetter('age'))print(rows_by_fname)print(rows_by_age)
输出结果:
[{'fname': 'bim', 'lname': 'jones', 'age': 23}, {'fname': 'brian', 'lname': 'jones', 'age': 18}, {'fname': 'david', 'lname': 'beazley', 'age': 25}, {'fname': 'john', 'lname': 'clesse', 'age': 19}][{'fname': 'brian', 'lname': 'jones', 'age': 18}, {'fname': 'john', 'lname': 'clesse', 'age': 19}, {'fname': 'bim', 'lname': 'jones', 'age': 23}, {'fname': 'david', 'lname': 'beazley', 'age': 25}]
[finished in0.1s]
菏泽分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录