使用pandas从json字符串中提取嵌套值



下面是我使用的嵌套json:

{
"9": {
"uid": "9",
"name": "pedro",
"mail": "pedro@pedro.com",
"roles": [
"authenticated",
"administrator"
],
"user_status": "1"
},
"10": {
"uid": "10",
"name": "Rosa",
"mail": "rosa@rosa.com",
"roles": [
"authenticated",
"administrator"
],
"user_status": "1"
},
"11": {
"uid": "11",
"name": "Tania",
"mail": "tania@tania.com",
"roles": [
"authenticated",
"administrator"
],
"user_status": "1"
}
}

每个第一个键都不同于其他键。我需要提取每个键之间的信息,例如uid、name、mail等,但对键id(9,10,11)不感兴趣。有没有任何方法来实现这一点,而不传递的关键id上的代码?

下面是我到目前为止所做的尝试:

import json
outputuids = {
"9": {
"uid": "9",
"name": "pedro",
"mail": "pedro@pedro.com",
"roles": [
"authenticated",
"administrator"
],
"user_status": "1"
},
"10": {
"uid": "10",
"name": "Rosa",
"mail": "rosa@rosa.com",
"roles": [
"authenticated",
"administrator"
],
"user_status": "1"
},
"11": {
"uid": "11",
"name": "Tania",
"mail": "tania@tania.com",
"roles": [
"authenticated",
"administrator"
],
"user_status": "1"
}
}
data1 = json.loads(outputuids)
for i in data1:
fuid=data1['9']['uid']
fname=data1['9']['name']
print (fuid + fname)

Pandas对于这项任务来说是多余的。您可以遍历outputuids.values(),以避免必须显式引用字典的键:

result = []
keys_to_retain = {"uid", "name", "mail"}
for val in outputuids.values():
result.append({k: v for k, v in val.items() if k in keys_to_retain})
print(result)

这个输出:

[
{'uid': '9', 'name': 'pedro', 'mail': 'pedro@pedro.com'},
{'uid': '10', 'name': 'Rosa', 'mail': 'rosa@rosa.com'},
{'uid': '11', 'name': 'Tania', 'mail': 'tania@tania.com'}
]

最新更新