python - 如何在 Python 中创建字典元组
问题描述
我有一个问题,我正在编辑字典的一个键的值,然后我想将这些字典存储为元组的条目。但问题是元组似乎是通过引用添加字典。
此处提供了示例代码:
import numpy as np
if __name__ == "__main__":
dict_decision = {'policy': 'decision-rule',
'file': 'policy', 'nopts': 1, 'vect_td': 10}
lifetime = 40; # years
vect_td = np.arange(1,lifetime)
tup_dict = ()
count = 0
for td in vect_td:
dict_decision.update({'vect_td':int(td)})
#print(dict_decision)
tup_dict = tup_dict + (dict_decision,)
count = count + 1
在 for 循环的末尾,字典dict_decision
有键vect_td
= 39
。当我检查 tup_dict 时,存储在里面的所有字典都有vect_td
=39
实际上我希望它们在 1 到 39 之间变化。它似乎已经通过dict_decision
引用传递了字典。我应该怎么做才能纠正这种情况?
解决方案
发生这种情况是因为当您调用时dict_decision.update(...)
,您会在循环的每次迭代中更新相同的 dict 实例。这意味着您的元组确实包含对同一字典的大量引用。
如果你在调用update
它之前复制原始字典,它可能会更好:
for td in vect_td:
td_dict = dict_decision.copy()
td_dict.update({'vect_td': int(td)})
tup_dict = tup_dict + (td_dict,)
count = count + 1
正如对您的问题的评论中所建议的那样,您可能还需要一个列表而不是一个元组,这样您就不必为循环的每次迭代创建新的元组,但这与您的问题并不严格相关。
推荐阅读
- c - 将指针存储为二维数组时遇到问题
- python - 如何基于多个条件更快地合并 2 个 pandas 数据框
- twig - 使用 Craft CMS 不显示图像
- sql - 具有两个不同名称的同一个表时无法进行 JOIN
- vba - 使用 VBA 定位现有的 IE 窗口选项卡
- c# - 如何使用 C# 中的扩展方法隐藏的 Moq 模拟 IMemoryCache 实例方法?
- python - 格式化数据框中的字符串
- sql - 在 JSONB 字段中循环 JSON 数组
- reactjs - 什么是 Android ViewModel 的 React 实现
- stm32 - STM32 使用 DMA 在 GPIO PIN 上生成位模式