2013-02-13 16 views

Odpowiedz

13

To działa, jeśli definiowania słownika d przed ręką i wyjąć * stamtąd:

>>> d = {} 
>>> d["a"], d["b"] = ("foo","bar") 

W rzeczywistości, nie trzeba tych nawiasów na RHS, więc będzie również pracować:

>>> d['a'], d['b'] = 'foo', 'bar' 
+0

Ahh, nie potrzebujesz *. Dzięki. – jsj

+0

@ trideceth12: Z ciekawości, skąd wziął się pomysł na '*'? –

+0

@ trideceth12. Nie ma za co :) –

0

To tylko literówka (*). To działa (testowane w Pythonie 2.7.3):

d = dict() 
d["a"], d["b"] = ("foo", "bar") 
7

Inni pokazali, jak można rozpakować do dyktatury. Jednak w odpowiedzi na twoje pytanie "czy istnieje lepszy sposób", argumentowałbym, że:

d.update(a='foo',b='bar') 

o wiele łatwiej parsować. Admitedtly, to nie zadziała, jeśli masz a i b które są zmienne, ale wtedy można użyć:

d.update({a:'foo',b:'bar'}) 

i myślę, że nadal preferują tę wersję z następujących powodów:

  • Skala do wielu (> 2) wartości ładniejsza, ponieważ może być podzielona na wiele linii bardziej czysto
  • To sprawia, że ​​natychmiast jasne, który klucz jest powiązany z wartością

A jeśli zaczynasz z 2-krotki wartości, niż to jest statyczna jak można pokazać, można nawet użyć zip:

d.update(zip(("a","b"),("foo","bar"))) 

która wprawdzie nie tak ładna jak inne dwie opcje ...

... Omówiliśmy wszystkie 3 sposoby użycia dict.update :).

+0

To jest naprawdę miłe. Zapomniałem o tym. Przynajmniej nie stanie się to brzydkie, gdy zwiększy się liczba wartości. +1 –