为了账号安全,请及时绑定邮箱和手机立即绑定

遍历字典。

遍历字典。

慕虎7371278 2021-11-30 19:25:37
我有一个包含 3 个列表的字典,每个列表包含 3 个元素,并且想要分别更改每个列表中的每个元素,从而生成 9 个新词典:d = {1:[a,b,c], 2:[e,f,g], 3:[h,i,j]}d1 = {1:[a+k,b,c], 2:[e,f,g], 3:[h,i,j]}d2 = {1:[a, b+k, c], 2:[e,f,g], 3:[h,i,j]}...d9 = {{1:[a,b,c], 2:[e,f,g], 3:[h,i,j+k]}有没有一种方法可以做到这一点而不必分别对每个字典进行硬编码?在代码的进一步下方,我将需要分别引用列表集(即我将输入 [a,b,c+k], [d,e,f], [g,h,i] 到某个函数中以获得解决方案),但我很高兴数据不是字典形式,只要我以后仍然可以参考它们的集合!
查看完整描述

1 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

您可以使用列表推导来迭代从 0 到 8 的数字,并使用 dict 推导生成列表的字典,该字典推导会k根据数字的商和 3 的余数输出可能添加的列表项:


[{k: [a + ('k' if n // 3 + 1 == k and n % 3 == i else '') for i, a in enumerate(l)] for k, l in d.items()} for n in range(9)]

所以给出:


d = {1:['a','b','c'], 2:['e','f','g'], 3:['h','i','j']}

这将返回:


[{1: ['ak', 'b', 'c'], 2: ['e', 'f', 'g'], 3: ['h', 'i', 'j']},

 {1: ['a', 'bk', 'c'], 2: ['e', 'f', 'g'], 3: ['h', 'i', 'j']},

 {1: ['a', 'b', 'ck'], 2: ['e', 'f', 'g'], 3: ['h', 'i', 'j']},

 {1: ['a', 'b', 'c'], 2: ['ek', 'f', 'g'], 3: ['h', 'i', 'j']},

 {1: ['a', 'b', 'c'], 2: ['e', 'fk', 'g'], 3: ['h', 'i', 'j']},

 {1: ['a', 'b', 'c'], 2: ['e', 'f', 'gk'], 3: ['h', 'i', 'j']},

 {1: ['a', 'b', 'c'], 2: ['e', 'f', 'g'], 3: ['hk', 'i', 'j']},

 {1: ['a', 'b', 'c'], 2: ['e', 'f', 'g'], 3: ['h', 'ik', 'j']},

 {1: ['a', 'b', 'c'], 2: ['e', 'f', 'g'], 3: ['h', 'i', 'jk']}]


查看完整回答
反对 回复 2021-11-30
  • 1 回答
  • 0 关注
  • 158 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信