tuples_通过字典赋值

内容来自:python for information

将items方法、元组赋值与for循环结合起来,你可以拥有一个良好的代码模式,使用单循环就可以遍历字典中的键与值。

for key, val in d.items():
    print val, key

这个循环中存在两个迭代变量。由于items返回一个元组列表,变量key和val通过字典的键值对进行迭代,继而得到赋值。

循环中的每次迭代都会使得key和value被赋予下一个字典键值对(仍然以哈希顺序)。

此循环的输出结果如下:

10 a
22 c
1 b

再次强调,这是哈希键顺序,也就是没有特定顺序。

将两种方法结合,按照每个键值对中的值来排序,输出字典的内容。

要做到这一点,首先创建一个元组列表,其中每个元组为(value, key)。通过items方法得到(key, value)元组列表。此时,我们想要根据value排序,而不是key。(value, key)元组列表一旦生成,排序就变得简单了,按照反向次序对列表排序,输出已排序的新列表。

>>> d = {'a':10, 'b':1, 'c':22}
>>> l = list()
>>> for key, val in d.items() :
...     l.append( (val, key) )
...
>>> l
[(10, 'a'), (22, 'c'), (1, 'b')]
>>> l.sort(reverse=True)
>>> l
[(22, 'c'), (10, 'a'), (1, 'b')]
>>>

创建元组列表时要非常谨慎,确保每个元组的第一个元素是值,这样就能对元组列表进行排序,获得所需的字典内容,该字典已按值进行排序。

 

posted @ 2018-03-26 20:49  solitude_26  阅读(159)  评论(0编辑  收藏  举报