在python中迭代字典值中的列表

时间:2017-11-24 02:03:54

标签: python loops dictionary

我有一个包含近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 }

但没有任何事情发生

2 个答案:

答案 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}