Dodawanie nowego elementu i słownik

0

Mogę dodać kolejny element do słownika w ten sposób:

slownik1 = {'a' : 'wartosc 1', 'b' : 'wartosc 2'}
slownik1[7] = 'wartosc 7'

Z takim wynikiem:

{'a': 'wartosc 1', 'b': 'wartosc 2', 7: 'wartosc 7'}

W ten sam sposób nie mogę zrobić z listą, muszę np. użyć metody append.

Jak działają słowniki, że w ten sposób

slownik1[7]

nie odwołuje się do 7 elementu zbioru tylko zaczynam tworzyć klucz i wartość?

2

W Pythonie jest "duck typing"[0], czyli jeśli jakaś metoda jest zdefiniowana na różnych obiektach, to możemy ją zawołać i będą one [te obiekty] zachowywać się podobnie (nie mamy sztywnego systemu typów, odsyłam do wikipedii). Obiekty do których można się odwoływać za pomocą indeksowania O[i] musza mieć zdefiniowaną metodę __setitem__, (jest to jedna z tak zwanych "magic methods"[1]) dla listy jest nadpisana w ten sposób, że ustawia element o danym indeksie listy, a w przypadku słownika, tworzy dodatkową parę klucz wartość.

>>> d = dict()
>>> d[9] = "nine"
>>> d
{9: 'nine'}
>>> d.__setitem__(0, "zero")
>>> d
{9: 'nine', 0: 'zero'}
>>> l = [1, 2 ,3]
>>> l
[1, 2, 3]
>>> l[0] = 0
>>> l
[0, 2, 3]
>>> l.__setitem__(0, -1)
>>> l
[-1, 2, 3]
>>> l.append(4)
>>> l
[-1, 2, 3, 4]

Wspomniane przez Ciebie append, to jeszcze co innego, dodaje element do końca listy.

[0] https://en.wikipedia.org/wiki/Duck_typing
[1] https://rszalski.github.io/magicmethods/

0

W słowniku kluczem może być wszystko hashowalne więc integer może być kluczem i tyle

1 użytkowników online, w tym zalogowanych: 0, gości: 1