首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:使用变量进行字典更新,添加新键,但用新键替换旧值

Python:使用变量进行字典更新,添加新键,但用新键替换旧值
EN

Stack Overflow用户
提问于 2017-03-24 21:29:54
回答 1查看 1.9K关注 0票数 0

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

问题是,当我试图向字典中添加多个K:V时,它会添加一个键,但将以前存储的所有值(在本例中是一个数组/列表)替换为最新的值。任何帮助都会很感激的。谢谢

EN

回答 1

Stack Overflow用户

发布于 2017-03-24 21:33:19

问题是,当我试图向字典中添加多个K:V时,它会添加一个键,但将以前存储的所有值(在本例中是一个数组/列表)替换为最新的值。

解决这个问题的技术是,每个键,badgeNum,新闻的值列表,而不是一个单一的值。

代码语言:javascript
复制
>>> 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,它需要花费更多的精力来设置,但使添加新值更简单(而且速度更快):

代码语言:javascript
复制
>>> 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']})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43009449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档