2012-07-12 24 views
1

鑑於以下字典,我想知道哪個密鑰的值最大。如果我有一個更長的字典,並想知道哪個鍵的程序化值最高(沒有目視檢查),我該如何去做?我能想到的唯一的辦法如下:如何統計與密鑰關聯的值的數量

dic = {'attacks': ['kick','puch','slap','elbow'], \ 
    'defense': ['block','parry','dodge']} 

DIC = { '攻擊': '踢', 'PUCH', '耳光', '肘部'], '國防':」塊」,‘招架’,‘輕功’]}

key_values_list = [] 
for key in dic: 
    key_name = '' 
    num = 0 
    for item in dic[key]: 
     num +=1 
    key_values_list.append((key,num)) 

for k,v in key_values_list: 
    print k,v 

回答

5

下面的代碼將計算的關鍵標記攻擊的實例:

>>> max(((k, len(v)) for k, v in dic.items()), key=lambda x: x[1]) 
('attacks', 4) 
>>> 
+1

並獲得最大...? – jamylak 2012-07-12 09:42:44

+1

通過將'''''''''改爲'(',')''來代替列表理解,使用生成器而不是列表理解 – jamylak 2012-07-12 09:49:13

+0

@hask感謝這個很好的工作 – Crispy 2012-07-12 09:49:42

5
>>> dic = {'attacks': ['kick','puch','slap','elbow'], 'defense': ['block','parry','dodge']} 
>>> max(dic, key=lambda k: len(dic[k])) 
'attacks' 
+0

我認爲這告訴我哪個鍵有大部分的價值,但在那裏我可以使用的東西會告訴我有多少值? – Crispy 2012-07-12 09:39:04

+1

@Crispy:如果你將結果賦給變量'maxkey','len(dic [maxkey])'會給你。 – 2012-07-12 09:39:52

+2

@Crispy:或者,'max(len(v)for v in dic.itervalues())'。 – 2012-07-12 09:41:48

相關問題