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.
获得此值的最快方法是什么?
或者:
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)生成器只返回给定子集中的键.