Tôi có ba danh sách, đầu tiên là danh sách các tên, danh sách thứ hai là danh sách các từ điển và danh sách thứ ba là danh sách dữ liệu. Mỗi vị trí trong danh sách tương ứng với cùng vị trí trong các danh sách khác. List_1 [0] có dữ liệu tương ứng trong List_2 [0] và List_3 [0], v.v. Tôi muốn chuyển ba danh sách này thành một từ điển bên trong từ điển, với các giá trị trong List_1 là các khóa chính. Làm cách nào để làm điều này trong khi vẫn giữ mọi thứ theo thứ tự?Từ điển ghép nối
6
A
Trả lời
13
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> c = [7,8,9]
>>> dict(zip(a, zip(b, c)))
{1: (4, 7), 2: (5, 8), 3: (6, 9)}
Xem documentation để biết thêm thông tin về zip
.
Như lionbest chỉ ra dưới đây, bạn có thể muốn xem itertools.izip()
nếu dữ liệu đầu vào của bạn lớn. izip
thực chất giống như zip
, nhưng nó tạo ra các trình lặp thay vì danh sách. Bằng cách này, bạn không tạo danh sách tạm thời lớn trước khi tạo từ điển.
1
Python 3:
combined = {name:dict(data1=List_2[i], data2=List_3[i]) for i, name in enumerate(List_1)}
Python 2.5:
combined = {}
for i, name in enumerate(List_1):
combined[name] = dict(data1=List_2[i], data2=List_3[i])
0
nếu thứ tự của những điều này vấn đề, bạn không nên sử dụng một từ điển. theo định nghĩa, chúng không có thứ tự. bạn có thể sử dụng một trong số many ordered_dictionary implementations thả nổi xung quanh hoặc đợi python 2.7 hoặc 3.1 sẽ bao gồm việc triển khai từ điển theo thứ tự trong mô-đun bộ sưu tập.
Các vấn đề liên quan
- 1. Nối từ điển vào từ điển?
- 2. Có thể ghép nối và ghép nối HTTP không?
- 3. Ghép nối trong smarty
- 4. Nối từ điển Python vào XML
- 5. Django: values_list() nhiều trường được ghép nối
- 6. Ghép nối chuỗi trong VBA
- 7. Ghép nối các chuỗi với
- 8. làm thế nào để nối hai từ điển để tạo một từ điển mới trong Python?
- 9. Ghép/Kết hợp/Nối hai cây AVL
- 10. Có thể ghép nối kết nối HTTP không?
- 11. Ghép nối CoreBluetooth với Lego NXT
- 12. Ghép nối trên bộ sưu tập
- 13. Phân mảnh và ghép nối IP
- 14. jQuery thêm chuỗi và không ghép nối
- 15. Kết nối/Ghép nối tai nghe Bluetooth và Android
- 16. C# từ điển giao nhau
- 17. Thêm/ghép nối hai chuỗi IEnumerable
- 18. Ghép nối chuỗi với dấu cách
- 19. Ghép nối Bluetooth trong C trên Linux
- 20. Ghép nối trong Bộ chọn jQuery
- 21. Ghép nối nhiều tệp CSS thành một
- 22. Android Bluetooth không ghép nối với nhau
- 23. Bộ chọn ghép nối trong jQuery?
- 24. Ghép nối dấu ngoặc ôm trong Emacs
- 25. Ghép nối NSStrings trong Mục tiêu C
- 26. Ma trận ghép nối trong R
- 27. Android StringBuilder vs String Ghép nối
- 28. Chuỗi ghép nối Định dạng chuỗi VS
- 29. Hibernate - Ghép nối đa hình bền vững
- 30. Ghép nối các bit trong VHDL
Nếu a, b, c sẽ rất lớn, tôi khuyên bạn nên dùng izip từ mô-đun itertools. – Arpegius
@lionbest: Tốt, tôi đã thêm điều đó. – balpha