Mam ten słownik wypełniony kluczami (każdy klucz jest krotką) i wartością Brak dla każdego klucza. Chcę dodać wartości (pojedynczo) w pętli for do kluczy, bez nadpisywania wartości

Ten kod zawiera komunikat o błędzie „AttributeError: Obiekt„ NoneType ”nie ma atrybutu„ 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))

Wynik, który chcę, to słownik1, który ma wyglądać:

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

Ale chcę, aby był on wypełniany w pętli for po jednej krotce naraz

2
linaki865 11 marzec 2020, 20:23

2 odpowiedzi

Najlepsza odpowiedź

Jak wspomniano w C. Lewisa, musisz zamienić None na pustą listę w aktualizacji słownika.

Ponadto listOfTuples jest listą, dlatego musisz uzyskać dostęp do jej elementu za pomocą składni listOfTuples[index] zamiast listOfTuples(index).

Poniższy kod osiąga oczekiwane wyniki:

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
Claudio Busatto 11 marzec 2020, 17:38

Aby to działało tak, jak chcesz, musisz zastąpić None pustą Listą [], ponieważ teraz próbujesz dodać (0,0) do Brak, stąd błąd.

dictionary1={}
dictionary1.update( {(0,0) : []} )
2
C. Fennell 11 marzec 2020, 17:28