Tôi có một danh sách các từ điển và muốn thêm một khóa cho từng yếu tố của danh sách này. Tôi đã thử:
result = [ item.update[{"elem":"value"}] for item in mylist ]
Nhưng phương thức cập nhật không trả về không, vì vậy danh sách kết quả của tôi không có gì.
result = [ item["elem"]="value" for item in mylist ]
Trả về một lỗi cú pháp.
Hỏi ngày 28 tháng 12 năm 2012 lúc 14:33Dec 28, 2012 at 14:33
1
Nếu bạn muốn sử dụng danh sách hiểu biết, có một câu trả lời tuyệt vời ở đây: //stackoverflow.com/a/3197365/4403872
Trong trường hợp của bạn, nó sẽ như thế này:
result = [dict[item, **{'elem':'value'}] for item in myList]
Eg.:
myList = [{'a': 'A'}, {'b': 'B'}, {'c': 'C', 'cc': 'CC'}]
Sau đó sử dụng một trong hai
result = [dict[item, **{'elem':'value'}] for item in myList]
hoặc
result = [dict[item, elem='value'] for item in myList]
Finally,
>>> result
[{'a': 'A', 'elem': 'value'},
{'b': 'B', 'elem': 'value'},
{'c': 'C', 'cc': 'CC', 'elem': 'value'}]
Đã trả lời ngày 13 tháng 1 năm 2016 lúc 2:40Jan 13, 2016 at 2:40
vk1011vk1011vk1011
6.8355 huy hiệu vàng25 Huy hiệu bạc42 Huy hiệu đồng5 gold badges25 silver badges42 bronze badges
0
Bạn không cần phải lo lắng về việc xây dựng một danh sách từ điển mới, vì các tham chiếu đến từ điển cập nhật của bạn giống như các tài liệu tham khảo cho từ điển cũ của bạn:
for item in mylist:
item.update[ {"elem":"value"}]
Đã trả lời ngày 28 tháng 12 năm 2012 lúc 14:37Dec 28, 2012 at 14:37
0
Bạn có thể sử dụng bản đồ.
result = map[lambda item: dict[item, elem='value'], myList]
Nếu bạn đã có danh sách các câu chuyện bạn có thể làm:
#elements = ['value'] * len[myList]
result = map[lambda item: dict[item[0], elem=item[1]],zip[myList,elements]]
sau đó bạn có kết quả
Đã trả lời ngày 16 tháng 7 năm 2017 lúc 12:22Jul 16, 2017 at 12:22
Câu trả lời của @VK1011 là tốt và có thể được mở rộng với nhà điều hành lan truyền một cách chính xác và các đối tượng từ điển mới là một lợi ích bổ sung
Để ghi đè bất kỳ giá trị khóa hiện có nào với giá trị mới, bạn có thể đặt toán tử lan truyền trước mục mới
0result = [ item["elem"]="value" for item in mylist ]
Để ghi đè giá trị của mục nhập mới với một giá trị hiện có, hãy sử dụng toán tử lây lan sau mục mới
1result = [ item["elem"]="value" for item in mylist ]
Cả hai phương pháp sẽ đưa ra một danh sách các đối tượng từ điển bao gồm cả mục mới
Đã trả lời ngày 13 tháng 11 năm 2018 lúc 15:27Nov 13, 2018 at 15:27
Theo truyền thống nhưng nhanh hơn câu trả lời khác [tinh vi]:
result = [ item["elem"]="value" for item in mylist ]
2Một số thời gian:
result = [ item["elem"]="value" for item in mylist ]
3Đã trả lời ngày 11 tháng 5 năm 2021 lúc 15:08May 11, 2021 at 15:08
Eideideid
3672 Huy hiệu bạc10 Huy hiệu Đồng2 silver badges10 bronze badges
result = [ item["elem"]="value" for item in mylist ]
4Bạn đang sử dụng danh sách hiểu không chính xác, cuộc gọi đến
result = [ item["elem"]="value" for item in mylist ]
6 trả về giá trị result = [ item["elem"]="value" for item in mylist ]
7 và do đó, danh sách mới được tạo của bạn sẽ có đầy đủ các giá trị result = [ item["elem"]="value" for item in mylist ]
7 thay vì các giá trị result = [ item["elem"]="value" for item in mylist ]
9 dự kiến của bạn.Bạn chỉ cần lặp qua các mục trong danh sách và cập nhật từng mục tương ứng, vì danh sách chứa các tham chiếu đến các giá trị
result = [ item["elem"]="value" for item in mylist ]
9.Đã trả lời ngày 28 tháng 12 năm 2012 lúc 14:37Dec 28, 2012 at 14:37
Bạn có thể sử dụng bản đồ.sean
Nếu bạn đã có danh sách các câu chuyện bạn có thể làm:21 silver badges28 bronze badges
sau đó bạn có kết quả
result = [ item["elem"]="value" for item in mylist ]
5Đã trả lời ngày 16 tháng 7 năm 2017 lúc 12:22Dec 28, 2012 at 14:38
Câu trả lời của @VK1011 là tốt và có thể được mở rộng với nhà điều hành lan truyền một cách chính xác và các đối tượng từ điển mới là một lợi ích bổ sung♦Martijn Pieters
Để ghi đè bất kỳ giá trị khóa hiện có nào với giá trị mới, bạn có thể đặt toán tử lan truyền trước mục mới275 gold badges3893 silver badges3248 bronze badges
0