【问题标题】:Updating a Dictionary within Python在 Python 中更新字典
【发布时间】:2014-10-29 08:33:15
【问题描述】:

我有一个代码试图将一个字典嵌套在另一个字典中。代码如下所示。问题是字典“CC”每次通过循环都会重写自己。有没有办法防止这种情况?我试过附加到一个列表,然后写字典没有运气。节点、CoordComboSort 和 Xcoord 是代码中的所有其他字典。

CoordComboSort 看起来像这样:

{0:[(1, 4, 5), (1, 7, 4)], .001:[(4, 6, 8), (3, 8, 6)]}

节点看起来像这样:

{'time':[ 'A', 'B']}

我希望最终的字典看起来像这样:

{'A': 0: [(1, 4, 5)], .001: [(4, 6, 8)], 'B': 0: [(1, 7, 4)], .001: [(3, 8, 6)]}   

CC = {}

for key in CoordComboSort.keys():
    for step in range(len(Xcoord[0])):
        CC[Nodes['time'][step]] = CoordComboSort[key][step]

上面的代码生成了一个如下所示的字典:

{'A': [(4, 6, 8)], 'B': [(3, 8, 6)]}

【问题讨论】:

  • 你知道字典中的每个键都必须是唯一的吗?看来密钥Nodes['time'][step] 正在生成相同的密钥,因此覆盖了最后一个密钥:值
  • 什么是Nodes? CoordComboSort? Xcoord?你期待什么输出,你会得到什么?
  • 重写自己是什么意思?尝试提供可以由其他 SO 成员运行的输入,以重现您的行为。
  • Xcoord 长什么样子?
  • ...你会得到什么? 为什么你的输出是一个包含单个三元组的列表?键 .001 不能有两个值;您可以为该键创建一个由三元组组成的二元列表。

标签: python dictionary


【解决方案1】:

不确定我是否正确地实现了您的目标,但根据您提供的示例,以下方法可能有效。

CC = {}

for step in range(len(Nodes['time'])):
    for key in CoordComboSort.keys():
        CC[Nodes['time'][step]] = {key : CoordComboSort[key][step] for key in CoordComboSort.keys()}

对于您的输入,输出将如下所示:

{'A': {0: (1, 4, 5), 0.001: (4, 6, 8)}, 'B': {0: (1, 7, 4), 0.001: (3, 8, 6)}}

【讨论】:

  • 这帮助了很多!抱歉,问题不是很清楚。谢谢!
猜你喜欢
  • 2015-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-18
  • 1970-01-01
  • 2021-10-01
  • 2017-10-05
相关资源
最近更新 更多