首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Python的max返回两个相等大的值

使用Python的max返回两个相等大的值
EN

Stack Overflow用户
提问于 2012-03-25 00:21:26
回答 6查看 23.6K关注 0票数 19

我正在使用Python的max函数在名为count的字典中查找最大整数和相应的键(不太确定我说的是否正确;我的代码可能解释得比我解释的更好)。字典count类似于{'a': 100, 'b': 210},依此类推。

代码语言:javascript
复制
number = count[max(count.items(), key=operator.itemgetter(1))[0]]
highest = max(count, key=count.get)

如果其中有两个相等的最大值,我该怎么办?如果我有{'a': 120, 'b': 120, 'c': 100},它只能找到ab中的第一个,而不是两个都找到。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-03-25 00:30:14

想法是找到最大值,并获得与该值对应的所有键:

代码语言:javascript
复制
count = {'a': 120, 'b': 120, 'c': 100}

highest = max(count.values())

print([k for k, v in count.items() if v == highest])
票数 32
EN

Stack Overflow用户

发布于 2012-03-25 01:17:52

与星号的想法相同,但不需要对列表进行两次迭代。更冗长一点。

代码语言:javascript
复制
count = { 'a': 120, 'b': 120, 'c': 100 }
answers = []
highest = -1

def f(x):
    global highest, answers
    if count[x] > highest:
        highest = count[x]
        answers = [x]
    elif count[x] == highest:
        answers.append(x)

map(f, count.keys())
print answers
票数 2
EN

Stack Overflow用户

发布于 2012-03-25 00:57:23

快速单次通过:

代码语言:javascript
复制
a = { 'a': 120, 'b': 120, 'c': 100 }
z = [0]
while a:
    key, value = a.popitem()
    if value > z[0]:
        z = [value,[key]]
    elif value == z[0]:
        z[1].append(key)

print z
#output:
[120, ['a', 'b']]

和一种有趣的defaultdict方式

代码语言:javascript
复制
import collections
b = collections.defaultdict(list)
for key, value in a.iteritems():
    b[value].append(key)
print max(b.items())
#output:
(120, ['a', 'b'])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9853302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档