[英]How to create and compare JSON values in python lists
嘗試構建和比較從JSON REST API提取的項目列表,似乎有一種更簡單的方法可以將整個json響應轉換為
我有一個來自REST API的JSON數據,我想從中提取並比較數據對。 該代碼顯示了從響應中提取的兩個值,但是我想重復執行此操作,並且僅顯示尚未返回的值。
>>> response = requests.get('http://192.168.2.3:8081/api/session/wifi', auth=('user', 'pass'))
>>> json_response = response.json()
>>> #parse the json and get list of mac and channels
... for each in json_response['aps']:
... channel = each['channel']
... mac = each['mac']
... print channel, mac
...
11 74:83:c2:1a:d2:74
11 18:e8:29:bb:16:39
11 f0:f2:49:0b:9b:e8
6 c0:7c:d1:b8:14:28
6 84:34:97:b4:0f:a1
11 76:83:c2:1a:d2:74
11 f0:f2:49:e2:2c:e8
1 1a:e8:29:9d:1e:63
11 1a:e8:29:9b:16:39
11 1a:e8:29:9d:1f:16
11 18:e8:29:9d:1f:16
1 18:e8:29:9d:1e:63
我希望有一種使用JSON請求對象的簡便方法。
這是源JSON:
{
"aps": [{
"received": 0,
"handshake": false,
"clients": [],
"vendor": "Ubiquiti Networks Inc.",
"encryption": "WPA2",
"hostname": "CoreWireless",
"authentication": "PSK",
"wps": {},
"sent": 1875183,
"alias": "",
"mac": "18:e8:29:9d:1e:63",
"meta": {
"values": {}
},
"frequency": 2412,
"ipv4": "0.0.0.0",
"ipv6": "",
"rssi": -63,
"first_seen": "2019-09-18T09:56:09.938447-06:00",
"cipher": "TKIP",
"channel": 1,
"last_seen": "2019-09-18T12:45:50.489350663-06:00"
}, {
"received": 0,
"handshake": false,
"clients": [],
"vendor": "",
"encryption": "WPA2",
"hostname": "<hidden>",
"authentication": "PSK",
"wps": {},
"sent": 0,
"alias": "",
"mac": "1a:e8:29:9b:16:39",
"meta": {
"values": {}
},
"frequency": 2462,
"ipv4": "0.0.0.0",
"ipv6": "",
"rssi": -73,
"first_seen": "2019-09-18T09:56:12.473447-06:00",
"cipher": "CCMP",
"channel": 11,
"last_seen": "2019-09-18T12:45:49.718002705-06:00"
}
]
}
您是否可以實現如下所示的緩存?
cache = set()
for each in json_response['aps']:
channel = each['channel']
mac = each['mac']
if (channel, mac) not in cache:
print channel, mac
cache.add((channel, mac))
您可以使用set
來存儲唯一元素,並在一個襯紙下面使用它來打印非重復頻道,mac對:
print ({(each['channel'], each['mac']) for each in json_response['aps']})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.