a.sort(key=lambda x: b.index(x[0]))
này phân loại a
tại chỗ bằng cách sử dụng các chỉ số trong b
của phần tử đầu tiên của mỗi tuple từ a
như các giá trị nó loại trên.
khác, có thể sạch hơn, cách viết nó sẽ là:
a.sort(key=lambda (x,y): b.index(x))
Nếu bạn có một số lượng lớn các mặt hàng, nó có thể là hiệu quả hơn để làm những việc khác một chút, vì .index()
có thể một hoạt động đắt tiền trên một danh sách dài và bạn không thực sự cần phải phân loại đầy đủ vì bạn đã biết thứ tự:
mapping = dict(a)
a[:] = [(x,mapping[x]) for x in b]
Lưu ý rằng điều này sẽ chỉ hoạt động đối với danh sách 2 bộ dữ liệu. Nếu bạn muốn nó để làm việc cho các bộ tùy độ dài, bạn cần phải sửa đổi nó một chút:
mapping = dict((x[0], x[1:]) for x in a)
a[:] = [(x,) + mapping[x] for x in b]
có thể trùng lặp của [Danh sách sắp xếp dựa trên giá trị từ danh sách khác?] (Http://stackoverflow.com/questions/6618515/sorting-list-based-on-values-from-another-list) – user1251007