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} |
语法与列表理解密切相关,但不是每个列表元素值的一个表达式,而是两个表达式:一个用于键(在上面的示例中只有
您似乎已经熟悉语法,因为您创建了一个从键到空列表的字典映射:
1 | mean_dict = {key: [] for key in my_dict} |
在使用单独的循环将这些列表替换为针对完全相同键的
使用字典理解!
1 | mean_lists = {key:sum(l)/len(l) for key, l in my_dict.items() if l} |