2013-06-04 79 views
5

Tôi có nhiều danh sách ở định dạng này:Tạo từ điển từ danh sách python

['1', 'O1', '', '', '', '0.0000', '0.0000', '', ''] 
['2', 'AP', '', '', '', '35.0000', '105.0000', '', ''] 
['3', 'EU', '', '', '', '47.0000', '8.0000', '', ''] 

tôi cần phải tạo ra một từ điển với phím là yếu tố đầu tiên trong danh sách và giá trị như toàn bộ danh sách. Không có phím nào được lặp lại. Cách tốt nhất để làm điều đó là gì?

Trả lời

5

đặt tất cả các danh sách của bạn trong danh sách khác và làm điều này:

my_dict = {} 
for list in lists: 
    my_dict[list[0]] = list[:] 

này về cơ bản được các yếu tố đầu tiên và đặt nó như là một chìa khóa trong my_dict và đưa danh sách như giá trị.

7
>>> lists = [['1', 'O1', '', '', '', '0.0000', '0.0000', '', ''], 
['2', 'AP', '', '', '', '35.0000', '105.0000', '', ''], 
['3', 'EU', '', '', '', '47.0000', '8.0000', '', '']] 
>>> {x[0]: x for x in lists} 
{'1': ['1', 'O1', '', '', '', '0.0000', '0.0000', '', ''], '3': ['3', 'EU', '', '', '', '47.0000', '8.0000', '', ''], '2': ['2', 'AP', '', '', '', '35.0000', '105.0000', '', '']} 
+0

cảm ơn rất nhiều :) Thực sự đã giúp –

+0

Nhưng tôi sẽ làm gì nếu tôi cần tạo một từ điển riêng cho từng danh sách và tôi không muốn hợp nhất các danh sách? –

+0

@wannabe_geek bạn phải giữ danh sách của mình bằng cách nào đó. đưa tất cả vào một danh sách là cách dễ nhất. bạn có thể sử dụng những thứ khác như danh sách được liên kết nếu bạn muốn. đầu ra của bạn tuân theo cùng một quy tắc. Bạn phải giữ nó ở đâu đó. Từ điển là sự lựa chọn tốt nhất. – AliBZ

0

Nếu chỉ số của bạn là số nguyên tuần tự, bạn có thể sử dụng một danh sách thay vì một dict:

lst = [None]+[x[1:] for x in sorted(lists)] 

sử dụng nó chỉ khi nó thực sự phù hợp với vấn đề của bạn, mặc dù.

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