Tôi có một cuốn từ điển tương tự như thế này:
[{ 'khóa' : 10, 'giá trị' : [ [1,2] [3,4,5] [6,7,8,9] ] }, { ... }]
Miễn là có một giá trị trong danh sách dài nhất, tôi cố gắng trả về một từ điển mới với "giao điểm" làm khóa và phần tử thứ n của mỗi danh sách làm giá trị. Danh sách có độ dài khác nhau, danh sách ngắn hơn sẽ chỉ nối thêm giá trị cuối cùng của chúng nhiều lần, ví dụ:
{10:[1,3,6]}
{10:[2,4,7]}
{10:[2,5,8]}
{10:[2,5,9]}
Tôi nên lặp lại itervalues(), iterkey() hay iteritems()? Có thể có những câu hỏi tương tự được đăng lên nhưng tôi không tìm được cách giải thích ngắn gọn, thiếu từ khóa.
Làm cách nào tôi có thể tạo một chức năng có thể hoàn thành nhiệm vụ này?
bạn cầnLặp lại nhiều lần cho đến khi có mục trong danh sách số dài nhất. Trên mỗi lần lặp, bạn nhận được giá trị thứ n từ mỗi danh sách bằng cách sử dụng chỉ mục tăng dần.
尝试这样的事情:
def giao nhau (khóa, giá trị):
"""
Trả về n lần số thứ n của mỗi danh sách trong `values`,
trong danh sách từ điển.
"""
giao nhau_list = []
dài nhất = max(map(len,values))
cho n trong phạm vi (dài nhất):
# lấy giá trị thứ n nếu có một hoặc chỉ giá trị cuối cùng
nth_values = [l[n] if n
intersect_list.append({key:nth_values})
trở lại giao lộ_list
dict_list = [{ 'key':10, 'values':[[1,2],[3,4,5],[6,7,8,9]] }]
cho d trong dict_list:
print(intersect(d['key'],d['values']))
Nó sẽ cung cấp cho bạn đầu ra mong muốn:
[{10: [1, 3, 6]}, {10: [2, 4, 7]}, {10: [2, 5, 8]}, {10: [2, 5, 9]}]
Tôi là một lập trình viên xuất sắc, rất giỏi!