关于python:通过列表理解为字典键赋值

assigning values to dictionary keys with list comprehension

本问题已经有最佳答案,请猛点这里访问。

这主要是一个好的/Python式的问题。我有一本字典,上面列出了一些值,例如

1
my_dict = {"a": a_list,"b": b_list,"c": c_list}

等等。我还有一个空字典,有相同的键,我想把这些列表的平均值和它们的键存储在一起。如果我不使用第二个字典,而是使用嵌套列表,我可以这样做。

1
mean_lists = [[key, sum(l)/len(l)] for key, l in my_dict.items() if l]

输出

1
[["a", a_mean], ["b", b_mean], ["c", c_mean]]

我觉得这很好。有没有一种方法可以很好地将其输出为字典,或者类似这样:

1
2
3
4
mean_dict = {key: [] for key in my_dict}
for key, l in my_dict.items():
    if l:
        mean_dict[key] = sum(l)/len(l)

我能做的最好?


是的,通过使用字典理解;您已经有了构建列表理解中每个键和值的部分,只需稍微更改语法:

1
{key: sum(l) / len(l) for key, l in my_dict.items() if l}

语法与列表理解密切相关,但不是每个列表元素值的一个表达式,而是两个表达式:一个用于键(在上面的示例中只有key),另一个用于关联值(上面的sum(l) / len(l))。

您似乎已经熟悉语法,因为您创建了一个从键到空列表的字典映射:

1
mean_dict = {key: [] for key in my_dict}

在使用单独的循环将这些列表替换为针对完全相同键的sum(l) / len(l)计算之前。


使用字典理解!

1
mean_lists = {key:sum(l)/len(l) for key, l in my_dict.items() if l}