Как обновить вложенный dict по ключу?

Предположим, что есть этот dict:

s1 = ("P1", "S1", 600)
s2 = ("P2", "S2", 180)
s3 = ("P3", "S3", 180)

p = {
    'C1': {
        (2014, 1, 1, 1, 0, 0): s1,
        (2014, 1, 1, 2, 0, 0): s2,
        (2014, 1, 1, 3, 0, 0): s3,
        (2014, 1, 1, 4, 0, 0): s1,
        (2014, 1, 8, 1, 0, 0): s3,
        (2014, 1, 9, 1, 0, 0): s3,
        (2014, 1, 10, 1, 0, 0): s3,
        (2014, 1, 11, 1, 0, 0): s3},
    'C2': {
        (2014, 1, 1, 1, 0, 0): s2,
        (2014, 1, 1, 2, 0, 0): s3,
        (2014, 1, 1, 3, 0, 0): s2,
        (2014, 1, 1, 4, 0, 0): s2,
        (2014, 1, 8, 1, 0, 0): s1,
        (2014, 1, 9, 1, 0, 0): s1}
}

Мне нужно создать еще один dict и обновить конкретный ключ "C1", вот так:

new_p = dict.fromkeys(p.keys(),{})

t1 = {(2017, 1, 1, 1, 0, 0): s2}
t2 = {(2018, 1, 1, 1, 0, 0): s1}

new_p['C1'].update(t1)
new_p['C2'].update(t2)

Я ожидал этого:

 {
 'C2': 
    {
        (2017, 1, 1, 1, 0, 0): ('P2', 'S2', 180)
    },
 'C1': 
    {
        (2017, 1, 1, 1, 0, 0): ('P2', 'S2', 180)
    }
}

Но у меня было это:

 {
 'C2': 
    {
        (2017, 1, 1, 1, 0, 0): ('P2', 'S2', 180), 
        (2018, 1, 1, 1, 0, 0): ('P1', 'S1', 600)
    },
 'C1': 
    {
        (2017, 1, 1, 1, 0, 0): ('P2', 'S2', 180),
        (2018, 1, 1, 1, 0, 0): ('P1', 'S1', 600)
    }
}

К сожалению, два параметра dict by key были обновлены одновременно, но я ожидал обновления отдельно. У кого-то есть предложение?

2 ответа

Пытаться:

new_p['C1'] = t1
new_p['C2'] = t2

Пытаться:

new_p['C2'] = t1
new_p['C1'] = t1
Другие вопросы по тегам