我正在尝试将信息存储在字典中,以便以后访问。我在动态地使用变量,其中"badgeID“是作为键使用的全局计数器,而值是从用户那里获得的数组/列表。

问题是,当我试图向字典中添加多个K:V时,它会添加一个键,但将以前存储的所有值(在本例中是一个数组/列表)替换为最新的值。任何帮助都会很感激的。谢谢
发布于 2017-03-24 21:33:19
问题是,当我试图向字典中添加多个K:V时,它会添加一个键,但将以前存储的所有值(在本例中是一个数组/列表)替换为最新的值。
解决这个问题的技术是,每个键,badgeNum,新闻的值列表,而不是一个单一的值。
>>> mydict = {}
>>> mydict.setdefault(1234, []).append('first 1234')
>>> mydict.setdefault(5678, []).append('first 5678')
>>> mydict.setdefault(1234, []).append('second 1234')
>>> mydict.setdefault(5678, []).append('second 5678')
>>> mydict
{1234: ['first 1234', 'second 1234'], 5678: ['first 5678', 'second 5678']}另一种方法是使用https://docs.python.org/3/library/collections.html#collections.defaultdict,它需要花费更多的精力来设置,但使添加新值更简单(而且速度更快):
>>> from collections import defaultdict
>>> mydict = defaultdict(list)
>>> mydict[1234].append('first 1234')
>>> mydict[5678].append('first 5678')
>>> mydict[1234].append('second 1234')
>>> mydict[5678].append('second 5678')
>>> mydict
defaultdict(<class 'list'>, {1234: ['first 1234', 'second 1234'], 5678: ['first 5678', 'second 5678']})https://stackoverflow.com/questions/43009449
复制相似问题