首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果key已经存在,则将值追加到key (python/jython)

如果key已经存在,则将值追加到key (python/jython)
EN

Stack Overflow用户
提问于 2012-06-01 12:08:38
回答 1查看 6.6K关注 0票数 3

我有一个清单,我需要把它写进字典里。列表中有重复的键(即将出现),它们具有不同的值。如何找到这些键并向其追加新值?

代码语言:javascript
运行
复制
list=[q:1,w:2,q:7]
dictionary= q:1,7
            w:2

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2012-06-01 12:13:17

在您的字典列表中创建值,这样您就可以:

代码语言:javascript
运行
复制
dictionary = {'q': [1, 7],
              'w': [2]
}

例如,你的单项值就是单项列表。这意味着当你有另一个'q'时,你可以这样做:

代码语言:javascript
运行
复制
dictionary['q'].append(5)

不同的是,第一次执行时dictionary['q']将是KeyError,因此请使用setdefault

代码语言:javascript
运行
复制
dictionary.setdefault('q', []).append(5)

因此,现在您只需要迭代输入列表中的每个键、值对,并对每个键、值对执行上述操作。

您也可以选择将dictionary设置为:

代码语言:javascript
运行
复制
dictionary = collections.defaultdict(list)

所以你可以只做dictionary['q'].append(5) --它的工作原理和上面的一样,除了一个方面。如果在解析了原始列表并正确设置了所有值之后,您的字典如下所示:

代码语言:javascript
运行
复制
dictionary = {'q': [1, 7, 5]
              'w': [2, 8, 10, 80]
              'x': [3]
}

然后你试着做print(dictionary['y'])。你期望会发生什么?如果你使用一个普通的dict和setdefault,这被认为是一个错误,因此它将引发KeyError。如果您使用defaultdict,它将打印一个空列表。无论哪种方式对您的代码更有意义,都应该决定您的编码方式。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10844282

复制
相关文章

相似问题

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