Ok, ten powinien być prosty. Mam 3 słowniki. Wszystkie są wykonane, zamówione i wypełnione do mojej satysfakcji, ale chciałbym umieścić je wszystkie w nadrzędnym słowniku, dzięki czemu mogę się łatwiej i manipulować ich łatwiejmi i skuteczniej.

Layer0 = {}
Layer1 = {}
Layer2 = {}

Tutaj są utworzone, a potem opłacalnie próbowałem różnych rzeczy opartych na tak pytaniach:

Layers = {Layer0, Layer1, Layer2}

Który podniósł błąd składni

Layers = {'Layer0', 'Layer1', 'Layer2'}

Który podniósł inny błąd składniowy

(Layers to słownik, który próbuję stworzyć, który będzie miał wszystkie wcześniej wykonane słowniki w niej)

Wszystkie pozostałe przykłady, które znalazłem, więc były związane z tworzeniem słowników w słowników, aby wypełnić je jednocześnie), a ponieważ już kodowałem dużą liczbę linii, aby wykonać te słowniki, wolałbym umieścić je w Słownik po fakcie zamiast ponownego zapisu kodu.

Najlepiej byłoby, jeśli zamówienie słowników zostanie zachowany po umieszczeniu w Layers

Czy ktoś wie, czy to możliwe i jak powinienem to zrobić?

2
Ason 15 sierpień 2012, 22:33

2 odpowiedzi

Najlepsza odpowiedź

Należy Korzystanie z .keys () lub .values () generuje listę, która ma zamówienie, ale sam słownik nie.

Więc kiedy mówisz: "Najlepiej byłoby, jeśli kolejność słowników zostanie zachowana po warstwie" - to naprawdę nic nie znaczy. Na przykład, jeśli zmienisz nazwę słowników z "Layer1, Layer2, Layer3" do "A, B, C," zobaczysz, że warstwy.keys () wydruki w kolejności "A, C, B." To prawda, niezależnie od zamówienia, którego użyłeś przy budowaniu słownika. Wszystko to pokazuje, że wartość Hash "C" jest mniejsza niż "B," i nie mówi ci nic o strukturze Twojego słownika.

Dlatego też nie możesz bezpośrednio przewidzieć w słowniku (musisz iterować nad e.g. lista kluczy).

W boku Uwaga ta funkcja Hash jest tym, co pozwala słownikowi robić szalone szybkie wyszukiwanie. Dobra funkcja Hash da ci stały czas [O (1)] Wyszukaj, co oznacza, że możesz sprawdzić, czy dany element jest w słowniku w tym samym czasie, czy słownik zawiera dziesięć przedmiotów lub dziesięć milionów. Całkiem fajne.

2
A Kaptur 15 sierpień 2012, 19:20