我有点坚持为项目编写函数。该函数采用候选人字典,其值是他们收到的投票数。然后我必须返回一个包含remaining_candidates的集合。换句话说,具有最少投票数的候选人不应该在返回的集合中,并且如果例如所有候选人具有相同的投票,则该集合应该是空的。我在这里开始时遇到了麻烦。 例如,我知道我可以这样对字典进行排序:
x = min(canadites, key=canadites.__getitem__)
但是,如果候选人具有相同的价值,那将无效,因为它只会弹出字典中的最后一个。
有什么想法吗?
更新:说清楚。
假设我有以下词典:
canadites = {'X':22,'Y':1, 'Z':0}
理想情况下,函数应该返回一个只包含X和Y的集合。但是如果Y和Z都包含1个
x = min(canadites, key=canadites.__getitem__)
似乎只返回Z
答案 0 :(得分:1)
创建一个新的dict而不是从旧的dict中弹出项目更清晰:
>>> d = {'a':1, 'b':2, 'c':1, 'd':3}
>>> min_val = min(d.values())
>>> {k:v for k,v in d.items() if v > min_val}
{'b': 2, 'd': 3}
在python2中,itervalues
和iteritems
会更有效率,尽管在大多数情况下这是微优化。