排序我有一個python字典如迭代過蟒字典由元件
{
'FOUR':
[['emit', 'build', 'simulate'], 'TestFour', 2],
'HELLO':
[['emit', 'build', 'simulate'], 'TestThree', 1]
}
如何可以遍歷基於所述數1,2的元素?我的意思是,我怎樣才能得到'你好'(1),然後'四'(2)?
排序我有一個python字典如迭代過蟒字典由元件
{
'FOUR':
[['emit', 'build', 'simulate'], 'TestFour', 2],
'HELLO':
[['emit', 'build', 'simulate'], 'TestThree', 1]
}
如何可以遍歷基於所述數1,2的元素?我的意思是,我怎樣才能得到'你好'(1),然後'四'(2)?
for x in sorted(d, key=lambda x:d[x][2]):
print x
這將打印
HELLO
FOUR
如果d
是你的字典:
for k in sorted(d.keys(), key=lambda k, d=d: d[k][2]):
...
這是如何工作的?首先,我們需要特定順序的密鑰,因此我們使用sorted
內置函數。 「sorted
」取key
參數「指定用於從每個列表中提取比較關鍵字的一個參數的函數」。這裏提供的lambda使用該鍵從相應的值中檢索第三個項目,然後用它對鍵進行排序。
原諒我的無知:爲什麼在'lambda'語句中將'd'作爲默認參數傳遞? – senderle 2011-02-22 22:37:53
@senderle:不需要。這是從Tkinter回調書寫大量lambda表達式的擱置,他們從不同的範圍調用它們。 – 2011-02-22 22:44:14
my_list = (t[1] for t in sorted([(v[2],k) for k,v in my_dict.iteritems()]))
list(my_list) == ['HELLO', 'FOUR']
+1因爲發帖比我快。 :) – 2011-02-22 22:35:10
@Steven,只有一個頭發:) – senderle 2011-02-22 22:36:30
你需要那裏的'.keys()'嗎? – Gabe 2011-02-23 06:57:04