我正在试图找出字典中最大的价值,而且我遇到了一些问题。 这是我的代码:
def most_fans(dictionary):
empty = ''
for key in dictionary:
if len(dictionary[key]) > next(dictionary[key]):
empty = key
print(empty)
我意识到我的代码存在问题,因为如果我有这样的字典:
fans={'benfica': ['joao','ana','carla'],
'sporting': ['hugo','patricia'],
'porto': ['jose']}
输出将是'benfica'
和'sporting'
。因为benfica比运动更大,但运动也比波尔图更大。然而,这是我提出的最好的。
有人能告诉我一个体面的方法吗?
答案 0 :(得分:3)
您可以将Effect
与密钥一起使用:
max()
下面:
>>> max(fans, key=lambda team:len(fans[team]))
'benfica'
遍历max(fans, ...)
的键(即团队名称),根据某些标准寻找最大元素; 答案 1 :(得分:2)
如果你有两支拥有相同数量球迷的球队:
public void listAllFiles(File folder, boolean subfolders) {
for (final File fileEntry : folder.listFiles()) {
if (fileEntry.isDirectory()) {
System.out.println(fileEntry.getName() + " (folder)");
if(subfolders)
listAllFiles(fileEntry, subfolders);
} else if(fileEntery.isFile()){
System.out.println(fileEntry.getName() + " (file) ["+getProperties(fileEntry)+"]");
}
}
}
public String getProperties(File f) {
String prop = "";
prop += f.canRead()?"+r":"";
prop += f.canWrite()?"+w":"";
prop += f.canExecute()?"+e":"";
prop += f.isHidden()?"+h":"";
return prop;
}
fans = {'benfica':['joao','ana','carla'],
'sporting':['hugo','patricia', 'max'],
'porto':['jose']}
方法只为您提供其中一种方法:
max()
使用collections.Counter
,您可以获得最常见的内容:
>>> max(fans, key=lambda team:len(fans[team]))
'benfica'
或全部:
>>> from collections import Counter
>>> counts = Counter({k: len(v) for k, v in fans.items()})
>>> counts.most_common(2)
[('benfica', 3), ('sporting', 3)]
答案 2 :(得分:0)
>>> max_val = lambda xs: max(xs.iteritems(), key=lambda x: len(x[1]))
>>> max_val(fans)
('benfica', ['joao', 'ana', 'carla'])