我有一本以下形式的字典:
my_dict = { "a" : ["Hey", 3] , "b" : ["Hello, 2], "c" : ["Heya", 8] }
(并且每个列表都具有相同的格式和“大小”)。我想找到每个列表第二列的最小值的键。在这个例子中,基于整数值,所以我得到的键是“b”。我尝试使用 lambda 函数将其编写为列表推导式,但无法使其正常工作,所以我最终得到了这个:
min = 60 # with 60 being a logical maximum value
for key in my_dict:
if my_dict[key][1] < min:
min = wordDict[key][1]
min_key = key
min_key
有没有更高效、更“优雅”的方式?
答案 0 :(得分:3)
您可以在 key
中使用自定义 min
函数:
my_dict = { "a":["Hey", 3] , "b":["Hello", 2], "c":["Heya", 8] }
r = min(my_dict, key=lambda x:my_dict[x][-1])
输出:
'b'
答案 1 :(得分:1)
不使用 min
函数,只需 for
循环。遍历字典并不断检查最小值和对应的键。
import sys
my_dict = { "a" : ["Hey", 3] , "b" : ["Hello", 2], "c" : ["Heya", 8] }# your code goes here
min_val = sys.maxsize
min_val_key = None
for i, v in my_dict.items():
if min_val>v[1]:
min_val = v[1]
min_val_key = i
print(f"min value is {min_val} and key is {min_val_key}")
输出
min value is 2 and key is b