使用列表理解为字典键赋值
assigning values to dictionary keys with list comprehension
这主要是good/pythonic风格的问题。我有一本字典,其中包含值列表,即
my_dict = {"a": a_list, "b": b_list, "c": c_list}
等等。我还有一个具有相同键的空字典,我想在其中存储这些列表的平均值与它们的键。如果我不使用第二个字典,而是使用嵌套列表,我可以做到
mean_lists = [[key, sum(l)/len(l)] for key, l in my_dict.items() if l]
给出输出
[["a", a_mean], ["b", b_mean], ["c", c_mean]]
这对我来说似乎很整洁。有没有一种方法可以很好地输出为字典,或者是这样的:
mean_dict = {key: [] for key in my_dict}
for key, l in my_dict.items():
if l:
mean_dict[key] = sum(l)/len(l)
我能做到最好吗?
是的,通过使用 dictionary comprehension;你已经有了在你的列表理解中构建每个键和值的部分,只需稍微改变语法:
{key: sum(l) / len(l) for key, l in my_dict.items() if l}
语法与列表理解密切相关,但不是每个列表元素值的单个表达式,而是两个表达式:一个用于键(在上面的示例中只是 key
),另一个用于关联值(上面的sum(l) / len(l)
)。
您似乎已经熟悉语法,因为您创建了一个从键到空列表的字典映射:
mean_dict = {key: [] for key in my_dict}
在使用单独的循环将这些列表替换为 sum(l) / len(l)
完全相同键的计算之前。
使用字典理解!
mean_lists = {key:sum(l)/len(l) for key, l in my_dict.items() if l}
这主要是good/pythonic风格的问题。我有一本字典,其中包含值列表,即
my_dict = {"a": a_list, "b": b_list, "c": c_list}
等等。我还有一个具有相同键的空字典,我想在其中存储这些列表的平均值与它们的键。如果我不使用第二个字典,而是使用嵌套列表,我可以做到
mean_lists = [[key, sum(l)/len(l)] for key, l in my_dict.items() if l]
给出输出
[["a", a_mean], ["b", b_mean], ["c", c_mean]]
这对我来说似乎很整洁。有没有一种方法可以很好地输出为字典,或者是这样的:
mean_dict = {key: [] for key in my_dict}
for key, l in my_dict.items():
if l:
mean_dict[key] = sum(l)/len(l)
我能做到最好吗?
是的,通过使用 dictionary comprehension;你已经有了在你的列表理解中构建每个键和值的部分,只需稍微改变语法:
{key: sum(l) / len(l) for key, l in my_dict.items() if l}
语法与列表理解密切相关,但不是每个列表元素值的单个表达式,而是两个表达式:一个用于键(在上面的示例中只是 key
),另一个用于关联值(上面的sum(l) / len(l)
)。
您似乎已经熟悉语法,因为您创建了一个从键到空列表的字典映射:
mean_dict = {key: [] for key in my_dict}
在使用单独的循环将这些列表替换为 sum(l) / len(l)
完全相同键的计算之前。
使用字典理解!
mean_lists = {key:sum(l)/len(l) for key, l in my_dict.items() if l}