Как добавить новое значение в существующий ключ в словаре (без потери предыдущих значений)? - PullRequest
2 голосов
/ 11 марта 2020

Этот словарь заполнен ключами (каждый ключ - кортеж) и значением None для каждого ключа. Я хочу добавить значения (по одному) в пределах для l oop к ключам, без перезаписи значений

Этот код имеет сообщение об ошибке "AttributeError: у объекта 'NoneType' нет атрибута 'append' "

dictionary1={}
dictionary1.update( {(0,0) : None} )

listOfTuples=[(0,0),(1,0),(9,0)]
for x in range(3):
    dictionary1[(0,0)].append(listOfTuples(x))

Результат, который я хочу, - это словарь Dictionary1:

{ (0,0) : [(0,0),(1,0),(9,0)] }

Но я хочу, чтобы он заполнялся для l oop по одному кортежу за раз

Ответы [ 2 ]

2 голосов
/ 11 марта 2020

Как указано C. Льюис , вам нужно заменить None на пустой список в обновлении словаря.

Кроме того, listOfTuples - это список, поэтому вам нужно получить доступ к его элементу, используя вместо этого синтаксис listOfTuples[index] из listOfTuples(index).

Следующий код достигает ожидаемых результатов:

dictionary1={}
dictionary1.update( {(0,0) : []} )

print(dictionary1.keys())
listOfTuples=[(0,0),(1,0),(9,0)]
for x in range(3):
    dictionary1[(0,0)].append(listOfTuples[x])

print(dictionary1) # {(0, 0): [(0, 0), (1, 0), (9, 0)]}
2 голосов
/ 11 марта 2020

Таким образом, чтобы это работало так, как вы хотите, вам нужно заменить None пустым списком [], потому что сейчас вы пытаетесь добавить (0,0) к None, следовательно, ошибка.

dictionary1={}
dictionary1.update( {(0,0) : []} )
...