2015-01-04 28 views
6

Cách tốt nhất để tạo từ điển danh sách là gì? Ví dụ, nếu tôi có danh sách list1, List2 và muốn thực hiện một cuốn từ điển my_dict như thế:Python - từ điển của danh sách

my_dict = ['list1': list1, 'list2': list2] 

tôi đã tìm thấy this dụ nhưng câu trả lời tốt nhất được viết vào năm 2009. Có thể có một số cách laconic mới hơn để làm điều này?

+3

Bạn cần phải sử dụng xoăn chứ không phải là dấu ngoặc vuông , nhưng nếu không thì điều này có lẽ là tốt như nó được. – NPE

Trả lời

7

Bạn cần phải sử dụng dấu ngoặc nhọn chứ không phải là hình vuông, nhưng nếu điều này có lẽ tốt như nó được:

list1 = ['a', 'b', 'c'] 
list2 = [1, 2, 3, 4] 
my_dict = {'list1': list1, 'list2': list2} 
0

Sử dụng cú pháp cú đúp xoăn để định nghĩa từ điển, và cung cấp cho mỗi mục trong từ điển của bạn một chìa khóa tương ứng với mỗi giá trị:

list_a = [1,2,3,4,5] 
list_b = [6,7,8,9,10] 

my_dict = {'list1':list_a, 'list2':list_b} 

More in the python docs

0

này nên làm việc:

my_dict = dict([('list1', list1), ('list2', list2)]) 

Hoặc, cách khác:

my_dict = {'list1': list1, 'list2': list2} 

Kết quả sẽ giống nhau.

0

Hãy thử phương pháp này, rất gọn gàng. Xoăn niềng răng, không phải dấu ngoặc vuông.

Tôi nghĩ đó là cách ngắn nhất xung quanh nó.

list1 = [5, 500, 543] 
list2 = [4, 4, 4] 

my_dict = {'list1':list1, 'list2': list2} 
2

Nếu bạn muốn biến tên biến thành khóa, dưới đây là similar question.

Nếu bạn chỉ muốn từ điển danh sách có khóa tuần tự.

def turn_to_dict(*args): 
    return {i: v for i, v in enumerate(args)} 

lst1 = [1, 2, 3, 4] 
lst2 = [3, 4, 6, 7] 
lst3 = [5, 8, 9] 

v = turn_to_dict(lst1, lst2, lst3) 

>>> print(v) 
{0: [1, 2, 3, 4], 1: [3, 4, 6, 7], 2: [5, 8, 9]} 
+2

không sử dụng dict làm tên biến –

+0

ah vâng, cảm ơn. – GGhe

2

Để biết từ điển của danh sách, hãy xem xét defaultdict.

A từ điển thông thường hoạt động tốt, nhưng nó làm tăng lỗi nếu không tìm thấy khóa.

list1 = list("abcd") 
list2 = [1, 2, 3, 4] 


d = {"list1": list1, "list2": list2} 
d["list3"] 
# KeyError: 'list3' 

Điều này có thể gây rối trong một số ứng dụng và có thể yêu cầu xử lý ngoại lệ bổ sung.

defaultdict hoạt động như một lệnh thông thường trong khi thêm một số bảo vệ chống lại lỗi.

import collections as ct 


dd = ct.defaultdict(list) 
dd.update(d) 
dd 
# defaultdict(list, {'list1': ['a', 'b', 'c', 'd'], 'list2': [1, 2, 3, 4]}) 

Thêm phím bị thiếu sẽ gọi chức năng nhà máy mặc định, tức là list. Ở đây thay vì lỗi, chúng tôi nhận được vùng chứa trống:

dd["list3"] 
# [] 

Mục nhập này đã được thêm vào danh sách trống.

dd 
# defaultdict(list, 
#    {'list1': ['a', 'b', 'c', 'd'], 
#    'list2': [1, 2, 3, 4], 
#    'list3': []}) 

Chuyển đổi một defaultdict đến một dict thường xuyên bằng cách thiết lập các nhà máy mặc định để None

dd.default_factory = None 
dd 
# defaultdict(None, {'list1': ['a', 'b', 'c', 'd'], 'list2': [1, 2, 3, 4]}) 

hoặc bằng dict() dựng sẵn:

dict(dd) 
# {'list1': ['a', 'b', 'c', 'd'], 'list2': [1, 2, 3, 4]} 
Các vấn đề liên quan