我有一個字典構成元組鍵和整數計數,我想由元組的(鍵[2])作爲這樣Python的 - 由元組值順序進行排序的元組鍵控字典
data = {(a, b, c, d): 1, (b, c, b, a): 4, (a, f, l, s): 3, (c, d, j, a): 7}
print sorted(data.iteritems(), key = lambda x: data.keys()[2])
第三值對它進行排序
與該預期輸出
>>> {(b, c, b, a): 4, (a, b, c, d): 1, (c, d, j, a): 7, (a, f, l, s): 3}
,但我現在的代碼似乎什麼也不做。這應該怎麼做?
編輯:適當的代碼是
sorted(data.iteritems(), key = lambda x: x[0][2])
但在上下文
from collections import Ordered Dict
data = {('a', 'b', 'c', 'd'): 1, ('b', 'c', 'b', 'a'): 4, ('a', 'f', 'l', 's'): 3, ('c', 'd', 'j', 'a'): 7}
xxx = []
yyy = []
zzz = OrderedDict()
for key, value in sorted(data.iteritems(), key = lambda x: x[0][2]):
x = key[2]
y = key[3]
xxx.append(x)
yyy.append(y)
zzz[x + y] = 1
print xxx
print yyy
print zzz
zzz爲無序。我知道這是因爲字典默認是無序的,我需要使用OrderedDict對其進行排序,但我不知道在哪裏使用它。如果我使用它作爲選中的答案,表明我得到'元組索引超出範圍'的錯誤。
解決方案:
from collections import OrderedDict
data = {('a', 'b', 'c', 'd'): 1, ('b', 'c', 'b', 'a'): 4, ('a', 'f', 'l', 's'): 3, ('c', 'd', 'j', 'a'): 7}
xxx = []
yyy = []
zzz = OrderedDict()
for key, value in sorted(data.iteritems(), key = lambda x: x[0][2]):
x = key[2]
y = key[3]
xxx.append(x)
yyy.append(y)
zzz[x + y] = 1
print xxx
print yyy
print zzz
字典未排序 – depperm
字典可以在iteritems被調用時進行排序。 –
@JonathanConnell:這並不意味着你可以得到你想要的結果。 –