繁体   English   中英

将字典附加到字典列表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM