我有一本这样的字典:
{
"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值(把"output“作为我的判断):
d_ = output.get("PNR")但它什么也不给。
无论我的dict中有多少个元素,我如何获得PNR值并用它们创建一个数组?
发布于 2021-11-15 20:53:19
您可以使用列表理解:
[v["PNR"] for v in dic.values() if "PNR" in v.keys()]输出:
['51313542', '13151351351', '13151351351', '13151351351', '13151351351', '13151351351', '13151351351', '13151351351', '13151351351', '13151351351', '13151351351']发布于 2021-11-15 20:54:53
如果PNR不在同一级别,您可以使用递归方法:
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://stackoverflow.com/questions/69980673
复制相似问题