2013-02-13 32 views

Trả lời

13

Nó sẽ có tác dụng nếu bạn xác định một từ điển d trước mặt, và loại bỏ các * từ đó:

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

Trong thực tế, bạn không cần những ngoặc trên RHS, vì vậy đây cũng sẽ làm việc:

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

Ahh, bạn không cần *. Cảm ơn. – jsj

+0

@ trideceth12: Trong sự tò mò, bạn đã lấy ý tưởng cho '*' ở đâu? –

+0

@ trideceth12. Bạn đang chào đón :) –

0

Nó chỉ là lỗi đánh máy (*). Công trình này (được thử nghiệm bằng Python 2.7.3):

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

Một số khác đã cho thấy cách bạn có thể giải nén thành một lệnh chính tả. Tuy nhiên, để trả lời câu hỏi của bạn "có cách nào tốt hơn", tôi sẽ cho rằng:

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

dễ phân tích cú pháp hơn. Admitedtly, điều này không có tác dụng nếu bạn có abbiến, nhưng sau đó bạn có thể sử dụng:

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

và tôi nghĩ rằng tôi vẫn thích rằng phiên bản dành cho những lý do sau:

  • Quy mô lên đến nhiều (> 2) giá trị đẹp hơn vì nó có thể được chia thành nhiều dòng rõ ràng hơn
  • Nó làm cho nó ngay lập tức xóa khóa nào được liên kết với giá trị

Và nếu bạn bắt đầu với một 2-tuple các giá trị, chứ không phải nó là tĩnh như bạn thấy, bạn thậm chí có thể sử dụng zip:

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

đó là phải thừa nhận là không đẹp như người kia hai tùy chọn ...

... Và chúng tôi vừa trình bày tất cả 3 cách bạn có thể sử dụng dict.update :).

+0

Điều này thực sự tốt đẹp. Quên nó đi. Ít nhất điều này sẽ không xấu đi khi số lượng giá trị gia tăng. +1 –

Các vấn đề liên quan