2011-06-29 7 views
47

Đây là cách tôi đang chuyển đổi một danh sách các hàng vào từ điển bằng Python:Danh sách các bộ vào từ điển

l = [('a',1),('b',2)] 
h = {} 
[h.update({k:v}) for k,v in l] 
> [None, None] 
h 
> {'a': 1, 'b': 2} 

Có cách nào tốt hơn? Có vẻ như phải có một lớp lót để làm điều này.

Trả lời

80

(Lưu ý: một "băm" được gọi là "từ điển" bằng Python.)

>>> my_list = [('a', 1), ('b', 2)] 
>>> dict(my_list) 
{'a': 1, 'b': 2} 
+0

Derp, tôi biết sẽ có một cách đơn giản để làm điều đó ... Đến từ Ruby ở đây, cố gắng học cách Python làm việc. Cảm ơn! –

15

Các constructor dict chấp nhận đầu vào chính xác như bạn có nó (tuples key/value).

>>> l = [('a',1),('b',2)] 
>>> d = dict(l) 
>>> d 
{'a': 1, 'b': 2} 

Từ documentation:

Ví dụ, những tất cả trở lại một cuốn từ điển bằng { "một": 1, "hai": 2}:

dict(one=1, two=2) 
dict({'one': 1, 'two': 2}) 
dict(zip(('one', 'two'), (1, 2))) 
dict([['two', 2], ['one', 1]]) 
5

Với dict hiểu:

h = {k:v for k,v in l} 
+0

tốt đẹp vì nó cho phép bạn định dạng trên khóa/giá trị trước khi thêm nó vào dict – jfunk