這裏是你怎麼能拿你正在尋找的排序列表:
items = ((k, k2, v) for k in d for k2, v in d[k].items())
ordered = sorted(items, key=lambda x: x[-1], reverse=True)
這首先你的字典轉換成產生的元組(key_1, key_2, value)
發電機,然後排序此基礎上的價值。 reverse=True
使其從最高到最低排序。
下面是結果:
>>> pprint.pprint(ordered)
[('library', 'lamp', 6),
('library', 'wall', 2),
('hain', 'facet', 1),
('hain', 'wrapp', 1),
('hain', 'chinoiserie', 1),
('library', 'sconc', 1),
('library', 'floor', 1),
('library', 'desk', 1),
('library', 'table', 1),
('library', 'maine', 1)]
注意,當值完全匹配,順序是任意的(除了項目將永遠key_1
分組),如果您想一些其他的行爲只是編輯問題與你在這些情況下的期望。
獲得該列表後,可以通過遍歷像這樣把它打印出來:
for key_1, key_2, value in ordered:
print key_1, key2, value # add whatever formatting you want to here
我看到你一位IDLE愛好者。團結,兄弟! –
@AntiEarth我也是! – jamylak