我有一個清單如下:
[
{
'Name': 'Name1',
'Address': 'Address1'
},
{
'Name': 'Name2',
'Postcode': 'MyPostcode'
}
]
另一個像這樣的串列:
[
{
'Name': 'Name1',
'data' : {
'Address': 'Address1',
'Postcode': 'Whatever'
},
{
'Name': 'Name2',
'data' : {
'Address': 'Whatever',
'Postcode': 'MyPostcode'
},
{
'Name': 'Name3',
'data' : {
'Address': 'Whatever',
'Postcode': 'Whatever'
},
]
對于第一個串列中的任何專案,我需要檢查第二個串列中是否存在該鍵/值組合,如果存在,請將其從第二個串列中洗掉
我可以在多行代碼中使用不同的 for 回圈來做到這一點,但可能有更明智的方法來做到這一點。有人可以提出一個優雅的解決方案嗎?
在上面的示例中,它應該從串列中洗掉前兩個 dicts 并回傳一個僅包含第三個的串列
[
{
'Name': 'Name3',
'data' : {
'Address': 'Whatever',
'Postcode': 'Whatever'
}
]
謝謝
uj5u.com熱心網友回復:
嘗試:
lst1 = [
{"Name": "Name1", "Address": "Address1"},
{"Name": "Name2", "Postcode": "MyPostcode"},
]
lst2 = [
{"Name": "Name1", "data": {"Address": "Address1", "Postcode": "Whatever"}},
{
"Name": "Name2",
"data": {"Address": "Whatever", "Postcode": "MyPostcode"},
},
{"Name": "Name3", "data": {"Address": "Whatever", "Postcode": "Whatever"}},
]
out = []
for d2 in lst2:
t = set({"Name": d2["Name"], **d2["data"]}.items())
for d1 in lst1:
if t.issuperset(d1.items()):
break
else:
out.append(d2)
print(out)
印刷:
[{'Name': 'Name3', 'data': {'Address': 'Whatever', 'Postcode': 'Whatever'}}]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/475771.html
下一篇:在串列中拆分單詞并迭代字典
