首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何合并两个字典,其中值是具有相同键的字符串

如何合并两个字典,其中值是具有相同键的字符串
EN

Stack Overflow用户
提问于 2019-12-11 13:14:39
回答 4查看 129关注 0票数 0

我有两本字典。

代码语言:javascript
复制
gen1 = {0: 'RR', 1: 'RR', 2: 'rR', 3: 'rR', 4: 'RR', 5: 'RR', 6: 'rR', 7: 'rR',
      8: 'Rr', 9: 'Rr', 10: 'rr', 11: 'rr', 12: 'Rr', 13: 'Rr', 14: 'rr', 15: 'rr'}

代码语言:javascript
复制
gen2 = {0: 'PP', 1: 'PP', 2: 'PP', 3: 'PP', 4: 'PP', 5: 'PP', 6: 'PP', 7: 'PP',
      8: 'PP', 9: 'PP', 10: 'PP', 11: 'PP', 12: 'PP', 13: 'PP', 14: 'PP', 15: 'PP'}

我想用同样的键连接他们

代码语言:javascript
复制
gen3 = {0: 'RRPP', 1: 'RRPP', 2: 'rRPP', 3: 'rRPP', 4: 'RRPP', 5: 'RRPP', 6: 'rRPP', 7: 'rRPP',
        8: 'RrPP', 9: 'RrPP', 10: 'rrPP', 11: 'rrPP', 12: 'RrPP', 13: 'RrPP', 14: 'rrPP', 15: 'rrPP'}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-12-11 13:17:03

您可以使用字典理解和f-strings构建一个新的字典:

代码语言:javascript
复制
{k:f'{v}{gen2.get(k, "")}' for k,v in gen1.items()}
# {k:'{}{}'.format(v, gen2.get(k, "")) for k,v in gen1.items()} # python versions under 3.6

{0: 'RRPP', 1: 'RRPP', 2: 'rRPP', 3: 'rRPP', 4: 'RRPP', 5: 'RRPP', 6: 'rRPP', 
 7: 'rRPP', 8: 'RrPP', 9: 'RrPP', 10: 'rrPP', 11: 'rrPP', 12: 'RrPP', 13: 'RrPP', 
 14: 'rrPP', 15: 'rrPP'}
票数 3
EN

Stack Overflow用户

发布于 2019-12-11 13:18:00

一分为二的理解力--与@yatu的回答略有不同。这将对来自gen1和gen2的所有唯一键进行操作--如果一个键只存在于其中一个字典中,则生成的字典将只具有相应的gen字典中的值。

代码语言:javascript
复制
>>> gen1 = {0: 'RR', 1: 'RR', 2: 'rR', 3: 'rR', 4: 'RR', 5: 'RR', 6: 'rR', 7: 'rR', 8: 'Rr', 9: 'Rr', 10: 'rr', 11: 'rr', 12: 'Rr', 13: 'Rr', 14: 'rr', 15: 'rr'}
>>> gen2 = {0: 'PP', 1: 'PP', 2: 'PP', 3: 'PP', 4: 'PP', 5: 'PP', 6: 'PP', 7: 'PP', 8: 'PP', 9: 'PP', 10: 'PP', 11: 'PP', 12: 'PP', 13: 'PP', 14: 'PP', 15: 'PP'}
>>> {k: gen1.get(k, '') + gen2.get(k, '') for k in set(list(gen1.keys()) + list(gen2.keys()))}
{0: 'RRPP',
 1: 'RRPP',
 2: 'rRPP',
 3: 'rRPP',
 4: 'RRPP',
 5: 'RRPP',
 6: 'rRPP',
 7: 'rRPP',
 8: 'RrPP',
 9: 'RrPP',
 10: 'rrPP',
 11: 'rrPP',
 12: 'RrPP',
 13: 'RrPP',
 14: 'rrPP',
 15: 'rrPP'}
票数 1
EN

Stack Overflow用户

发布于 2019-12-11 13:18:01

如果您确信gen1gen2具有完全相同的键,则应该可以这样做:

代码语言:javascript
复制
gen3 = { k: gen1[k] + gen2[k] for k in gen1 }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59286649

复制
相关文章

相似问题

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