我解決了這個問題,但我的解決方案很慢,而且我確信它不是最佳的。這是問題所在:
我有兩個清單。第一個串列包含帶有 id 和一些描述的字典(id 是唯一的;你不能有 2 個具有相同 id 的字典)。
第二個串列包含包含鏈接的字典的 id 的串列(例如:如果我有[78,22]它意味著 id 為 78 的字典和 id 為 22 的字典是鏈接的)。
我想要一個串列,其中包含包含鏈接的字典的串列。
為了更清楚,這里有一個例子:
l1 = [
{id:7, des:"..."},
{id:2, des:"..."},
{id:70, des:"..."},
{id:300, des:"..."},
{id:259, des:"..."},
{id:57, des:"..."}
]
l2 = [[259,2], [7], [300,57,70]]
而且我要
l3 = [
[{id:2, des:"..."}, {id:259, des:"..."}],
[{id:7, des:"..."}],
[{id:300, des:"..."}, {id:70, des:"..."}, {id:57, des:"..."}]
]
順序對我來說并不重要。
uj5u.com熱心網友回復:
由于 ID 是唯一的,因此您可以根據它們進行查找字典,然后只需使用串列推導即可l2。
lookup = {d['id']: d for d in l1}
result = [[lookup[e] for e in sublist] for sublist in l2]
結果:
[[{'id': 259, 'des': '...'}, {'id': 2, 'des': '...'}],
[{'id': 7, 'des': '...'}],
[{'id': 300, 'des': '...'}, {'id': 57, 'des': '...'}, {'id': 70, 'des': '...'}]]
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/496873.html
下一篇:比較兩個字典串列并獲得差異
