我有一本字典,其中每個鍵都有一個列表作爲值。每個列表都有一個或多個元組,內有2個項目,一個整數,一個字符串。Python複雜的字典排序
例子:
my_dict = {'dict_key_1': [(100, 'string_x1234'), (95, 'string_rtx3') ..],
'dict_key_2': [(26, 'string_abc3'), (321, 'string_432fd'), ...],
'dict_key_3': [(32, 'string_232df']}
我循環通過這本詞典,並同時做,通過列表中的項目。
但是,在這兩次迭代中,我必須按照列表中任何元組的第一項的最高值對字典進行排序。
在這種情況下所以,既然是最高的,我會得到dict_key_2第一,其項目將開始其第一個項目是元組上市,那麼等。
我很好的第二次迭代(排序元組的列表)與:
sorted(data[k], reverse = True)
但我目前無法在分揀依賴任何元組的最高值主詞典在列表中的那個關鍵的字典是持有的。我目前有:
for k in sorted(data, key=lambda k: sorted(data[k])[0][0]):
但是,它不工作。但是,當我嘗試打印sorted(data[k])[0][0])
而迭代,它確實給第一個值[0]第一個元組[0]具有它在該列表中下令對所有元組的第一個值之後(data[k]
)
我是什麼做錯了?我怎樣才能得到這個字典按需要排序?
謝謝。
更容易(和更高效)使用:'OrderedDict(sorted(my_dict.iteritems(),key = itemgetter (1),reverse = True))' –
是的,謝謝,這是更優雅 – wim