我有以下字典串列:
data = [
{
"connections": None
},
{
"connections": {
"endpoints": [
{
"id": "ee0d38d3-89fb-4e5b-b9bd-83ee554949ab",
"vlan": 200,
},
{
"id": "192ee48f-ad20-48ad-acae-9c8d33e4687b",
"vlan": 100,
},
]
}
},
{
"connections": {
"endpoints": [
{
"id": "4e6b8844-9a91-4098-aa92-ef97ce89cbed",
"vlan": 200,
},
{
"id": "577fcb45-57ab-4903-be60-5b8ac84b8a09",
"vlan": 100,
},
]
}
},
]
我想在資料中搜索“id”“ee0d38d3-89fb-4e5b-b9bd-83ee554949ab”并提取所有匹配的“id”的vlan。所以在這個例子中,我的結果變數應該只包含一個匹配串列,如下所示:
[100]
我之所以說一個串列,是因為 'id' "ee0d38d3-89fb-4e5b-b9bd-83ee554949ab" 可能還會有另一個資料條目,但具有不同的 vlan。所以你最終可能會得到我的結果:
[200, 300]
我嘗試了以下方法,但得到“TypeError:'NoneType'物件不可下標”:
vlans = [d["connections"]["endpoints"]["vlan"] for d in data if d["connections"]["endpoints"]["id"] == id]
uj5u.com熱心網友回復:
您執行以下操作:
res = [endpoint['vlan'] for item in data if item["connections"] for endpoint in item["connections"]["endpoints"] if endpoint['id']== "ee0d38d3-89fb-4e5b-b9bd-83ee554949ab"]
如果您需要唯一的 vlan 值,您可以使用
list(set(res))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/473215.html
標籤:python-3.x 列表 字典
上一篇:函式回傳單個字符而不是字串
