尝试将不同的值添加到此词典列表中.
empty_dict={'time':0, 'value':None}
dict=[empty_dict for i3 in range(5)]
print dict
Run Code Online (Sandbox Code Playgroud)
O/P:
[{'value': None, 'time': 0}, {'value': None, 'time': 0}, {'value': None, 'time': 0}, {'value': None, 'time': 0}, {'value': None, 'time': 0}]
Run Code Online (Sandbox Code Playgroud)
当我设置它
for i,i_val in enumerate(dict):
dict[i]['value']=i
print dict
O/P: [{'value': 4, 'time': 0}, {'value': 4, 'time': 0}, {'value': 4, 'time': 0}, {'value': 4, 'time': 0}, {'value': 4, 'time': 0}]
Run Code Online (Sandbox Code Playgroud)
^这会发生,其中所有值都采用它设置的最后一个值.
我想要输出
[{'value': 0, 'time': 0}, {'value': 1, 'time': 0}, {'value': 2, 'time': 0}, {'value': 3, 'time': 0}, {'value': 4, 'time': 0}]
Run Code Online (Sandbox Code Playgroud)
我知道我如何分配值存在一些问题.
我究竟做错了什么?我如何实现我想要的输出?
问题是这些词典中的每一个都指向同一个对象.
您需要创建empty_dict的副本.您可以使用字典构造函数来完成此操作.它需要另一个dict(在这种情况下,你的empty_dict)作为参数并返回一个新的字典.
empty_dict = {'time':0, 'value':None}
my_dicts = [dict(empty_dict) for i3 in range(5)]
Run Code Online (Sandbox Code Playgroud)
此外,如果你命名你的dict dict
,那么它将影响内置.
归档时间: |
|
查看次数: |
63 次 |
最近记录: |