如何检查字典中的某个内容是否与该字典中的最大值相同。换句话说,获取所有最大值,而不是位置最低的最大值。 我有一个返回最大变量名和值的代码:
d = {'g_dirt4': g_dirt4, 'g_destiny2': g_destiny2, 'g_southpark': g_southpark, 'g_codww2': g_codww2, 'g_bfront2': g_bfront2, 'g_reddead2': g_reddead2, 'g_fifa18': g_fifa18, 'g_motogp17': g_motogp17, 'g_elderscrolls': g_elderscrolls, 'g_crashbandicoot': g_crashbandicoot}
print("g_dirt4", g_dirt4, "g_destiny2", g_destiny2, "g_southpark", g_southpark, "g_codww2", g_codww2, "g_bfront2", g_bfront2, "g_reddead2", g_reddead2, "g_fifa18", g_fifa18, "g_motogp17", g_motogp17, "g_elderscrolls", g_elderscrolls, "g_crashbandicoot", g_crashbandicoot)
print (max(d.items(), key=lambda x: x[1]))
现在它打印的是最大值加上值本身的变量,但是如果有两个或三个最大值相同的变量呢?我想打印所有的最大值。你知道吗
编辑:
用户必须填写一个表单,向字典中的变量添加值。当用户完成时,将有一个、两个或多个变量具有最高值。例如,代码告诉我:
2017-06-08 15:05:43 g_dirt4 9 g_destiny2 8 g_southpark 5 g_codww2 8 g_bfront2 8 g_reddead2 7 g_fifa18 8 g_motogp17 9 g_elderscrolls 5 g_crashbandicoot 6
2017-06-08 15:05:43 ('g_dirt4', 9)
现在它告诉我g_dirt4
的最大值是9,但是如果你看motogp17
,它也有9,但是它没有被打印出来,因为它在字典中的位置更高。那我怎么把它们都打印出来呢?如果它有3个最大值相同的变量呢?你知道吗
让我给你介绍一个更复杂但更有力的答案。如果对字典项进行排序,可以使用itertools.groupby获得一些强大的结果:
sorted
行获取字典项的键/值对,并根据值对它们进行排序。我在前面放了一个-
,这样这些值就可以按降序排序了。该行的结果是:注意,如上所述,键的顺序(在本例中是“tres”、“troi”和“three”,然后是“two”和“dos”)是任意的,因为字典中键的顺序是任意的。你知道吗
itertools.groupby
行从数据运行中生成组。lambda告诉它查看每个键值对的kvp[1]
,即值。你知道吗目前,你只对最大值感兴趣,所以你可以这样做:
并得到以下结果:
但是,如果您希望对所有信息进行排序,则使用此方法,同样简单:
产生:
最后一点注意:您可以使用
next
或for循环,但使用这两种方法会得到不同的结果。grouped
是一个迭代器,对它调用next
会将它移到下一个结果(for循环会消耗整个迭代器,因此随后的next(grouped)
会导致StopIteration
异常)。你知道吗给我一本字典
以下命令:
收益率:
[('too', 2), ('two', 2), ('to', 2)]
你可以这样做:
这将获得最大值,然后遍历字典中的所有键和值,并将与该最大值匹配的所有键和值添加到列表中。然后打印列表,它应该打印所有的列表。你知道吗
相关问题 更多 >
编程相关推荐