2012-07-12 22 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

相关问题