通过列表理解具有重复键的字典元组列表?

问题描述 投票:5回答:1

我有一个包含重复项的元组列表,并已使用在这里找到的这段代码将它们转换为字典:

https://stackoverflow.com/a/61201134/2415706

mylist = [(a,1),(a,2),(b,3)]    
result = {}
for i in mylist:  
   result.setdefault(i[0],[]).append(i[1])
print(result)
>>> result = {a:[1,2], b:[3]}

[我回想起,大多数for循环可以重写为理解力,所以我想练习,但是过去一个小时我未能完成一项工作。

[我读到此:https://stackoverflow.com/a/56011919/2415706,现在我找不到另一个可以做到这一点的库,但是我也不知道我想写的这种理解是否是个坏主意,因为追加追加了东西。

python dictionary-comprehension
1个回答
7
投票

理解是指以相互独立的顺序映射项目,并且不适合于汇总,例如您问题中的情况,其中项目附加到的子列表取决于上一个项目附加的子列表到。

如果需要的话,您可以使用嵌套的理解来产生所需的输出,但是它将把在[[O(n)时间复杂度中需要解决的问题变成一个循环,该循环需要一个[[O(n ^ 2)代替:

{k: [v for s, v in mylist if s == k] for k, _ in mylist}
© www.soinside.com 2019 - 2024. All rights reserved.