2013-05-20 267 views
0

假設字典包含10個以上鍵值對。字典應該按值(整數)排序​​。打印前10個值(和相應的鍵)。我認爲這裏給出了更好的解決方案。通過字典遍歷X次

for keys in sorted(x): 
    c=c+1 
    if c>10: 
     break 
    else: 
     print keys, x['keys'] 
+1

沒有在Python「第一」 10個字典詞條的概念,因爲字典是無序的。你的意思是「任何10個條目」? –

+1

是的,任何10個條目都可以。 – Selvam

+0

對不起,更正。我將需要按降序排列值(整數值)。打印前十個值。 – Selvam

回答

5
for key in sorted(x, key=x.get, reverse=True)[:10]: 
    print key, x[key] 

對於真正的大dict你應該考慮使用heapq

from heapq import nlargest 
for key in nlargest(10, x, key=x.get): 
    print key, x[key] 
+0

謝謝你gnibbler。這對我有用。 – Selvam

+0

gnibbler sir,你的解決方案與this-topten = sorted(x.items(),key = lambda x:x [1],reverse = True)之間的區別是: – Selvam

+0

產生鍵/值對當你迭代它。我只是得到鑰匙。你可以試試他們兩個,看看哪個更有效率 –

1

在字典鍵上沒有定義順序,所以「第一個」鍵沒有定義好。具體來說,你所做的事情更容易完成x.keys()[:10]

0
topten = sorted(x.items(), key=lambda x:-x[1])[:10]