使用列表理解将值分配给字典键[重复]
Posted
技术标签:
【中文标题】使用列表理解将值分配给字典键[重复]【英文标题】:assigning values to dictionary keys with list comprehension [duplicate] 【发布时间】:2019-03-14 10:01:25 【问题描述】:这主要是一个好的/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)
我能做到最好?
【问题讨论】:
我想我被挂断了,因为我确信我必须事先初始化我的字典。我也不为我能够搜索以前回答的问题而感到自豪...... 【参考方案1】:使用字典理解!
mean_lists = key:sum(l)/len(l) for key, l in my_dict.items() if l
【讨论】:
【参考方案2】:是的,使用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)
计算之前。
【讨论】:
以上是关于使用列表理解将值分配给字典键[重复]的主要内容,如果未能解决你的问题,请参考以下文章
增强的 for 循环不适用于将值分配给数组(Java)[重复]