迭代python字典按元素排序

时间:2011-02-22 22:27:34

标签: python dictionary

我有一个python字典,如

 {
  'FOUR': 
     [['emit', 'build', 'simulate'], 'TestFour', 2], 
  'HELLO': 
     [['emit', 'build', 'simulate'], 'TestThree', 1]
 }

如何根据数字1,2迭代元素?我的意思是,我怎样才能得到'HELLO'(1),然后'四'(2)?

3 个答案:

答案 0 :(得分:4)

for x in sorted(d, key=lambda x:d[x][2]):
    print x

这将打印

HELLO
FOUR

答案 1 :(得分:2)

如果d是您的字典:

for k in sorted(d.keys(), key=lambda k, d=d: d[k][2]):
    ...

这是如何工作的?首先,我们希望按特定顺序使用密钥,因此我们使用sorted内置函数。 sorted采用key参数“指定一个参数的函数,该参数用于从每个列表中提取比较密钥。”这里提供的lambda使用密钥从相应的值中检索第三个项目,然后用于对键进行排序。

答案 2 :(得分:0)

my_list = (t[1] for t in sorted([(v[2],k) for k,v in my_dict.iteritems()]))
list(my_list) == ['HELLO', 'FOUR']