Tôi đang cố gắng để kết hợp ba từ điển, mà tất cả đều có các phím tương tự, và một trong hai danh sách các giá trị, hoặc các giá trị duy nhất.sáp nhập danh sách giá trị từ điển trong python
one={'a': [1, 2], 'c': [5, 6], 'b': [3, 4]}
two={'a': [2.4, 3.4], 'c': [5.6, 7.6], 'b': [3.5, 4.5]}
three={'a': 1.2, 'c': 3.4, 'b': 2.3}
Những gì tôi cần là cho tất cả các mục trong các giá trị được bổ sung vào một danh sách.
result={'a': [1, 2, 2.4, 3.4, 1.2], 'c': [5, 6, 5.6, 7.6, 2.3], 'b': [3, 4, 3.5, 4.5, 3.4]}
Tôi đã thử nhiều thứ, nhưng hầu hết đặt giá trị vào danh sách lồng nhau. Ví dụ:
out=dict((k, [one[k], two.get(k), three.get(k)]) for k in one)
{'a': [[1, 2], [2.4, 3.4], 1.2], 'c': [[5, 6], [5.6, 7.6], 3.4], 'b': [[3, 4], [3.5, 4.5], 2.3]}
tôi đã cố gắng cập nhật nó bằng cách lặp qua các giá trị:
out.update((k, [x for x in v]) for k,v in out.iteritems())
nhưng kết quả là giống hệt nhau. Tôi đã cố gắng chỉ đơn giản là thêm các danh sách, nhưng vì từ điển thứ ba chỉ có một phao, tôi không thể làm điều đó.
check=dict((k, [one[k]+two[k]+three[k]]) for k in one)
Vì vậy, tôi cố gắng đầu tiên thêm danh sách các giá trị của một và hai, và sau đó thêm giá trị của ba. Thêm danh sách làm việc tốt, nhưng sau đó khi tôi đã cố gắng để gắn phao từ điển thứ ba, đột nhiên toàn bộ giá trị đi đến 'Không'
check=dict((k, [one[k]+two[k]]) for k in one)
{'a': [[1, 2, 2.4, 3.4]], 'c': [[5, 6, 5.6, 7.6]], 'b': [[3, 4, 3.5, 4.5]]}
new=dict((k, v.append(three[k])) for k,v in check.items())
{'a': None, 'c': None, 'b': None}
Cảm ơn bạn rất nhiều! Nó hoạt động hoàn hảo tất nhiên! Cảm ơn đôi vì lời giải thích, rất hữu ích! – branwen85
Tôi đang làm việc trên một vấn đề tương tự và điều này là * rất * hữu ích. –