我有一本這樣的字典:
{
"0": {},
"1": {},
"2": {},
"3": {},
"4": {},
"5": {},
"6": {},
"7": {},
"8": {},
"9": {},
"10": {},
"11": {},
"12": {
"PNR": "51313542"
},
"13": {},
"14": {},
"15": {
"PNR": "13151351351"
},
"16": {
"PNR": "13151351351"
},
"17": {
"PNR": "13151351351"
},
"18": {
"PNR": "13151351351"
},
"19": {
"PNR": "13151351351"
},
"20": {
"PNR": "13151351351"
},
"21": {
"PNR": "13151351351"
},
"22": {
"PNR": "13151351351"
},
"23": {
"PNR": "13151351351"
},
"24": {
"PNR": "13151351351"
}
}
我只想獲取 PNR 并用它們創建一個陣列。
我嘗試了這個來獲取 PNR 值(將“輸出”視為我的字典):
d_ = output.get("PNR")
但它沒有。
無論我的字典中有多少個元素,我怎樣才能獲得 PNR 值并用它們創建一個陣列?
uj5u.com熱心網友回復:
您可以使用串列理解:
[v["PNR"] for v in dic.values() if "PNR" in v.keys()]
輸出:
['51313542', '13151351351', '13151351351', '13151351351', '13151351351', '13151351351', '13151351351', '13151351351', '13151351351', '13151351351', '13151351351']
uj5u.com熱心網友回復:
如果PNRs 不在同一級別,您可以使用遞回方法:
def get_pnr(dct):
pnrs = []
for k, v in dct.items():
if k == 'PNR':
pnrs = [v]
if isinstance(v, dict):
pnrs.extend(get_pnr(v))
return pnrs
a = get_pnr(d)
print(a)
輸出
['51313542', '13151351351', '13151351351', '13151351351', '13151351351', '13151351351', '13151351351', '13151351351', '13151351351', '13151351351', '13151351351']
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/358181.html
