我正在寻找使用字典处理某些数据输出的最聪明的方法。我有一个唯一键,它将与其他值相关联,例如我们有 1:[2, 3, 4, 7], 2:[8, 9, 5]。我想要做的是能够附加值,这样对于第一个键我可以添加数字 13 并获得以下内容:
1:[2, 3, 4, 7, 13], 2:[8, 9, 5]
Append 似乎不是执行此操作的最明智的方法。我正在使用:
dict[master = dict[master].append(id)
但我得到以下信息:
AttributeError: 'int' 对象没有属性 'append'
现在我可以简单地获取它们键的先前值并简单地执行以下操作 (id = 17):
newvalue = values, id
但这会导致额外的括号,例如
1:[[2, 3, 4, 7, 13], 17]
确保我只得到一组括号中的数字的最聪明的方法是什么,即
1:[2, 3, 4, 7, 13, 17]
我可以使用一些剥离功能 - 但有没有一种简单易行的好方法来做到这一点。我可能在这里忽略了一些简单的事情。提前致谢。
请您参考如下方法:
使用 collections.defaultdict(而且,wottthehell,让每个条目成为 collections.deque 只是为了好玩;您也可以使用普通的旧 list当然)。
from collections import defaultdict, deque
d = defaultdict(deque) # or ...(list)
d[1].append(2)
d[1].extend([3, 4, 7, 13])
这里的基本思想是你的字典值总是 deque并且你总是附加到它们,所以你永远不必担心关于一个值是否是 int。如果你使用字典中不存在的键,defaultdict 会自动为你创建一个新的deque,所以你永远不必检查键是否已经存在于字典中字典。
如果您已经有一个包含单个 int 值的常规字典——假设它是您调用的某个函数的返回值——您可以只使用该字典来构建您的新字典,之前无论你用它做什么,都可以使用它。
d = defaultdict(deque)
for key, value in old_d.iteritems():
d[key].append(value)
