【问题标题】:Convert list of list to dict, list for repeating values [duplicate]将列表列表转换为dict,重复值列表[重复]
【发布时间】:2017-11-07 20:03:05
【问题描述】:

这是我的代码:

l = [['A',11],['A',12],['B',13],['B',14],['C',15],['C',16],]
d = {}

>>> for a in l:
...     if a[0] in d:
...         s = d[a[0]]
...         s.append(a[1])
...         d[a[0]] = s
...     else:
...         d[a[0]] = [a[1]]
... 

我按预期拿到了我的字典。

print (d)
{'A': [11, 12], 'B': [13, 14], 'C': [15, 16]}

有没有更简单的方法来做到这一点?关键是如果键重复,则在列表列表中创建第二个元素的列表。

【问题讨论】:

  • 使用collections.defaultdict

标签: python list dictionary


【解决方案1】:

使用defaultdict

from collections import defaultdict

d = defaultdict(list)
for k, v in l:
   d[k].append(v)

【讨论】:

  • 真的吗?为什么你需要一个外部库?
  • @cᴏʟᴅsᴘᴇᴇᴅ 外部库在哪里?
  • @cᴏʟᴅsᴘᴇᴇᴅ 以避免在每次迭代时创建列表对象。
  • @cᴏʟᴅsᴘᴇᴇᴅ 不是,defaultdict在需要时创建一个。使用 .setdefault(x, []) 创建一个空字典,然后在每次迭代时将其传递给 setdefault,即使您不需要它。
  • @cᴏʟᴅsᴘᴇᴇᴅ itertools 不是 pandas。您可以快速导入它。它来自标准发行版。
猜你喜欢
  • 2017-02-21
  • 2018-06-28
  • 1970-01-01
  • 2016-08-29
  • 2020-12-07
  • 2021-06-09
  • 2021-09-08
  • 2019-11-27
  • 2015-06-23
相关资源
最近更新 更多