[英]Appending dictionary to list of dictionary
基本上提出了对字典的最后引用,并为所有附加而不是每个新字典修改了值。 所以每个事件应该是 1-3。还使用 while 循环不附加任何内容。
events=[{'start':{'dateTime':0},'end':{'dateTime':0}},]
start_dates=[
{'start':{'date':1},'end':{'date':1}},
{'start':{'date':2},'end':{'date':2}},
{'start':{'date':3},'end':{'date':3}},
]
for date in start_dates:
print(date)
del date['start']['date']
del date['end']['date']
for i in range(1,3):
new = dict(date)
new['start']['dateTime']=str(i)
new['end']['dateTime']=str(i)
print(new)
events.append(new.copy())
print(events)
输出:
[{'start': {'dateTime': 0}, 'end': {'dateTime': 0}},
{'start': {'dateTime': '2'}, 'end': {'dateTime': '2'}},
{'start': {'dateTime': '2'}, 'end': {'dateTime': '2'}},
{'start': {'dateTime': '2'}, 'end': {'dateTime': '2'}},
{'start': {'dateTime': '2'}, 'end': {'dateTime': '2'}},
{'start': {'dateTime': '2'}, 'end': {'dateTime': '2'}},
{'start': {'dateTime': '2'}, 'end': {'dateTime': '2'}}]
预期的:
[{'start': {'dateTime': 0}, 'end': {'dateTime': 0}},
{'start': {'dateTime': '1'}, 'end': {'dateTime': '1'}},
{'start': {'dateTime': '2'}, 'end': {'dateTime': '2'}},
{'start': {'dateTime': '3'}, 'end': {'dateTime': '3'}}]
没有必要重用内部字典——无论如何你都在删除结构。 除非有特定的原因需要 deepcopy。
还有一个缩进问题。
events=[{'start':{'dateTime':0},'end':{'dateTime':0}},]
start_dates=[
{'start':{'date':1},'end':{'date':1}},
{'start':{'date':2},'end':{'date':2}},
{'start':{'date':3},'end':{'date':3}},
]
for i in range(0,3):
new = {}
new['start'] = {'dateTime': str(i+1)}
new['end'] = {'dateTime' : str(i+1)}
events.append(new)
for event in events:
print(event)
Output 是
{'start': {'dateTime': 0}, 'end': {'dateTime': 0}}
{'start': {'dateTime': '1'}, 'end': {'dateTime': '1'}}
{'start': {'dateTime': '2'}, 'end': {'dateTime': '2'}}
{'start': {'dateTime': '3'}, 'end': {'dateTime': '3'}}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.