我有一个包含近2000个键的字典,每个键都有列表作为值(列表中有近2000个元素)。 像这样的东西: 字典
{ 'a' : [1, 0, 42, 53...], 'b' : [6, 52, 0, 23],...}
我需要做的是在dict中为每个键取最小值,除了0,需要删除0。 期望的输出:
{ 'a' : '1', 'b' : '6', ...}
我尝试过:
new_dict = { k:v for k, v in dict.items() if v!=0 }
但没有任何事情发生
答案 0 :(得分:4)
你快到了,这就是你想要的:
new_dict = { k:min(x for x in v if x != 0) for k, v in d.items()}
注意:请勿使用关键字dict
作为变量名称...
答案 1 :(得分:1)
如果你对直接for循环感觉更舒服,这里有一个替代方案可能更容易阅读:
d = {'a' : [1, 0, 42, 53], 'b' : [6, 52, 0, 23]}
new_dict = {}
for key, list_value in d.items():
new_dict[key] = min(filter(lambda x: x != 0, list_value))
print(new_dict) # {'a': 1, 'b': 6}