发现字典中的最大价值

时间:2017-01-02 23:30:06

标签: python dictionary max key-value-store

我正在试图找出字典中最大的价值,而且我遇到了一些问题。 这是我的代码:

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比运动更大,但运动也比波尔图更大。然而,这是我提出的最好的。

有人能告诉我一个体面的方法吗?

3 个答案:

答案 0 :(得分:3)

您可以将Effect与密钥一起使用:

max()

下面:

  • >>> max(fans, key=lambda team:len(fans[team])) 'benfica' 遍历max(fans, ...)的键(即团队名称),根据某些标准寻找最大元素;
  • lambda函数指定该标准(在此示例中,为团队拥有的粉丝数)。

答案 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'])