返回字典中元组键的给定元素的最大值

MLi*_*ter 1 python dictionary tuples

我有一个以元组为键的dict,我想获得最大的可用值,比如当前在字典中的元组键的第二个元素.例如,给定:

my_dict = {('a', 1):value_1, ('b', 1):value_2, ('a', 2):value_3, ('c', 3):value_4, ('b', 2):value_5}
Run Code Online (Sandbox Code Playgroud)

所以键的第二个元素的最大值是3.

获得此值的最快方法是什么?

Joe*_*ett 5

或者:

largest_key = max(my_dict, key=lambda x: x[1])
Run Code Online (Sandbox Code Playgroud)

要么:

from operator import itemgetter
largest_key = max(my_dict, key=itemgetter(1))
Run Code Online (Sandbox Code Playgroud)

根据DSM,dict直接迭代a 比检索和迭代keys()或更快viewkeys().

我认为Zverina女士正在谈论的是将您的数据结构从dict带有tuple键的转换为以下内容:

my_dict = {
    'a': {
            1: value_1,
            2: value_3
         }
    'b': {
            1: value_2,
            2: value_5
         }
    'c': {
            3: value_4
         }
}
Run Code Online (Sandbox Code Playgroud)

这样,如果你想找到所有值的最大值a,你可以简单地做:

largest_key = max(d['a'])
Run Code Online (Sandbox Code Playgroud)

无需额外费用.(您的数据已经分为子集,因此每次进行搜索时都不必浪费计算构建子集).

编辑

要将搜索限制为给定的子集,请执行以下操作:

>>> subset = 'a'
>>> largest_key_within_subset = max((i for i in my_dict if i[0] == subset), key=itemgetter(1))
Run Code Online (Sandbox Code Playgroud)

哪个(i for i in my_dict if i[0] == subset)生成器只返回给定子集中的键.