python 数据字典模块内容
字典排序:
zip
假设一个字典股票名称和对应的价格间的映射:
prices = {'ACME':45.23,
'AAPL':612.78,
'IBM':205.55,
'HPQ':37.20,
'FB':10.75}
对字典内容做有用的计算,会利用zip()将字典的键和值反转过来,再排序计算的时候,是按zip()生成的第一列作为排序依据的例如:
min_price = min(zip(prices.values(), prices.keys()))
reults:(10.75, 'FB')
min(zip(prices.keys(), prices.values()))
reults:('AAPL', 612.78)
同样的,要对数据进行排序只需要使用zip()再配合sorted()就可以了
sorted(zip(prices.values(), prices.keys()))
results:[(10.75, 'FB'),
(37.2, 'HPQ'),
(45.23, 'ACME'),
(205.55, 'IBM'),
(612.78, 'AAPL')]
在进行计算的时候,zip()创建了一个迭代器,它的内容只能被消费一次
对一个字典,如果直接对其进行处理,他们通常只会处理键,而不是值,
例如:min(prices) # AAPL
尝试用值处理问题时,min(prices.values()) # 返回的是比较结果,不是值。
通常较为理想的结果就是向函数中传入参数,min(prices, key=lambda k:prices[k]) # 'FB'
如果要找到最小值则需要进行二次查找;prices[min(prices, key=lambda k:prices[k])]
以上比较过程如果只用一个语句来进行比较的话,就可以利用zip,min(zip(prices.keys(), prices.values()));
当两个key值的value相同时,则返回拥有最大或者最小的key值的目录
比如:prices = {'AAA':45.23,
'ZZZ':45.23}
字典比较:
字典中如何把值化为集合:
b = {'w':10,
'x':11,
'y':2,
'z':2}
{value for value in b.values()} # {2, 10, 11}
[value for value in b.values()] # [10, 11, 2, 2]