如何解析 JSON 以获取 Python 中的特定值
how to parse JSON to get specific value in Python
请考虑以下数据:
{
"-L0B6_KJJlhWIaV96b61" : {
"name" : "John",
"text" : "hey"
},
"-L0B6cN4SV59tuNVWh_1" : {
"name" : "Joe",
"text" : "hi"
},
"-L0B6epDdv1grl7t5kdM" : {
"name" : "John",
"text" : "good to see you..."
},
"-L0B6fsyjAm4B_CWXKFs" : {
"name" : "Joe",
"text" : "how are you?"
}
现在如何在 Python 中解析此 JSON 文件的名称和文本?
我有一个像这样的大数据集。如您所见,在这种情况下对象是可变的,所以我不能简单地写:
# To print the name
pprint(data[object_variable][0])
请帮我打印名字和文字。
谢谢
如果我理解正确,请使用列表理解(或生成器)来放置字典的值:
[v for _, v in data.items()]
你可以直接打印或操作,当然不需要中间列表。
所以:
In [10]: d
Out[10]:
{'-L0B6fsyjAm4B_CWXKFs': {'name': 'Joe', 'text': 'how are you?'},
'-L0B6cN4SV59tuNVWh_1': {'name': 'Joe', 'text': 'hi'},
'-L0B6_KJJlhWIaV96b61': {'name': 'John', 'text': 'hey'},
'-L0B6epDdv1grl7t5kdM': {'name': 'John', 'text': 'good to see you...'}}
In [11]: [v for _, v in d.items()]
Out[11]:
[{'name': 'Joe', 'text': 'how are you?'},
{'name': 'Joe', 'text': 'hi'},
{'name': 'John', 'text': 'hey'},
{'name': 'John', 'text': 'good to see you...'}]
也许你可以试试:
data={
"-L0B6_KJJlhWIaV96b61" : {
"name" : "John",
"text" : "hey"
},
"-L0B6cN4SV59tuNVWh_1" : {
"name" : "Joe",
"text" : "hi"
},
"-L0B6epDdv1grl7t5kdM" : {
"name" : "John",
"text" : "good to see you..."
},
"-L0B6fsyjAm4B_CWXKFs" : {
"name" : "Joe",
"text" : "how are you?"
}}
print(list(map(lambda x:(x['text'],x['name']),data.values())))
输出:
[('good to see you...', 'John'), ('hi', 'Joe'), ('hey', 'John'), ('how are you?', 'Joe')]
请考虑以下数据:
{
"-L0B6_KJJlhWIaV96b61" : {
"name" : "John",
"text" : "hey"
},
"-L0B6cN4SV59tuNVWh_1" : {
"name" : "Joe",
"text" : "hi"
},
"-L0B6epDdv1grl7t5kdM" : {
"name" : "John",
"text" : "good to see you..."
},
"-L0B6fsyjAm4B_CWXKFs" : {
"name" : "Joe",
"text" : "how are you?"
}
现在如何在 Python 中解析此 JSON 文件的名称和文本? 我有一个像这样的大数据集。如您所见,在这种情况下对象是可变的,所以我不能简单地写:
# To print the name
pprint(data[object_variable][0])
请帮我打印名字和文字。 谢谢
如果我理解正确,请使用列表理解(或生成器)来放置字典的值:
[v for _, v in data.items()]
你可以直接打印或操作,当然不需要中间列表。
所以:
In [10]: d
Out[10]:
{'-L0B6fsyjAm4B_CWXKFs': {'name': 'Joe', 'text': 'how are you?'},
'-L0B6cN4SV59tuNVWh_1': {'name': 'Joe', 'text': 'hi'},
'-L0B6_KJJlhWIaV96b61': {'name': 'John', 'text': 'hey'},
'-L0B6epDdv1grl7t5kdM': {'name': 'John', 'text': 'good to see you...'}}
In [11]: [v for _, v in d.items()]
Out[11]:
[{'name': 'Joe', 'text': 'how are you?'},
{'name': 'Joe', 'text': 'hi'},
{'name': 'John', 'text': 'hey'},
{'name': 'John', 'text': 'good to see you...'}]
也许你可以试试:
data={
"-L0B6_KJJlhWIaV96b61" : {
"name" : "John",
"text" : "hey"
},
"-L0B6cN4SV59tuNVWh_1" : {
"name" : "Joe",
"text" : "hi"
},
"-L0B6epDdv1grl7t5kdM" : {
"name" : "John",
"text" : "good to see you..."
},
"-L0B6fsyjAm4B_CWXKFs" : {
"name" : "Joe",
"text" : "how are you?"
}}
print(list(map(lambda x:(x['text'],x['name']),data.values())))
输出:
[('good to see you...', 'John'), ('hi', 'Joe'), ('hey', 'John'), ('how are you?', 'Joe')]