Problemwartość Dołącz do jednej listy w słowniku dołącza wartość wszystkich list w słowniku
Tworzę słownik z pustych list jako wartości w następujący sposób.
>>> words = dict.fromkeys(['coach', 'we', 'be'], [])
Słownik wygląda tak.
>>> words
{'coach': [], 'be': [], 'we': []}
Kiedy dołączam wartość do jednej listy, wartość jest dołączana do wszystkich z nich, jak w tym przykładzie.
>>> words['coach'].append('test')
{'coach': ['test'], 'be': ['test'], 'we': ['test']}
Pytanie
Moje pytanie składa się z dwóch części. Po pierwsze, dlaczego tak się dzieje? Po drugie, co mogę z tym zrobić? To znaczy, w jaki sposób mogę dodać wartość tylko do jednej listy?
Wyobrażam sobie, że podczas tworzenia słownika, wszystkie listy zostały oznaczone na tym samym obiekcie. Ale nie rozumiem, jak to możliwe, ponieważ po wprowadzeniu 0
zamiast []
w tworzeniu słownika, a następnie dodaniu wartości zamiast ich dodania, wartości zachowują się inaczej, jakby wskazywały na różne obiekty.
Byłbym wdzięczny za wszelkie dane wejściowe. Z góry dziękuję!