首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从python中的json列表中获取多个数据

如何从python中的json列表中获取多个数据
EN

Stack Overflow用户
提问于 2022-10-07 20:28:20
回答 3查看 47关注 0票数 0

我对蟒蛇很陌生

我正在尝试使用汉斯火山api生成一个地图(https://volcanoes.usgs.gov/hans2/apiv2/volcanoApi/allWithNotice)

当以json格式打印我的URL时,我会看到许多这样格式的火山

代码语言:javascript
运行
复制
[{'obsAbbr': 'avo', 'volcCd': 'ak6', 'volcName': 'Akutan', 'volcUrl': 'https://avo.alaska.edu/volcanoes/volcinfo.php?volcname=Akutan', 'vnum': '311320', 'imgUrl': 'https://avo.alaska.edu/images/dbimages/display/1108076476_60_3.jpg', 'threat': 'Very High Threat'},

我想从中提取火山的名字。在做字典的时候,我只得到了一座火山。我想从这个json文件中获得所有火山的名字。

代码语言:javascript
运行
复制
v = requests.get(url2.format()).json()

volcano = {
    'name' : v[0]['volcName'],
}

任何帮助都将不胜感激,干杯

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-10-07 21:31:57

我不会把它当作字典列表保存,只要用字典就行:

代码语言:javascript
运行
复制
volcano_threats = {x['volcName']: x['threat'] for x in v}

输出:

代码语言:javascript
运行
复制
{'Akutan': 'Very High Threat',
 'Alaskan Volcanoes': None,
 'Aniakchak': 'High Threat',
 'Atka volcanic complex': 'High Threat',
...
}

或者保存所有数据:

代码语言:javascript
运行
复制
volcanos = {x['volcName']: x for x in v}
票数 1
EN

Stack Overflow用户

发布于 2022-10-07 20:37:51

你可以这样做,

代码语言:javascript
运行
复制
v = requests.get(url2.format()).json()
print([i['volcName'] for i in v])

结果

代码语言:javascript
运行
复制
['Akutan', 'Alaskan Volcanoes', 'Aniakchak', 'Atka volcanic complex', 'Augustine', 'Bogoslof', 'Cleveland', 'Davidof', 'Dutton', 'Edgecumbe', 'Fourpeaked', 'Frosty', 'Gareloi', 'Great Sitkin', 'Griggs', 'Iliamna', 'Kanaga', 'Kasatochi', 'Katmai', 'Korovin', 'Little Sitkin', 'Mageik', 'Makushin', 'Martin', 'Novarupta', 'Okmok', 'Pavlof', 'Redoubt', 'Sanford', 'Semisopochnoi', 'Shishaldin', 'Snowy Mountain', 'Spurr', 'Takawangha', 'Tanaga', 'Trident', 'Ugashik-Peulik', 'Ukinrek Maars', 'Veniaminof', 'Westdahl', 'Wrangell', 'Coso Volcanic Field', 'Lassen Volcanic Center', 'Long Valley Caldera', 'Cascade Range', 'Mount Hood', 'Mount St. Helens', 'Newberry', 'Three Sisters', 'Haleakala', 'Hualalai', "Kama'ehuakanaloa", 'Kilauea', 'Mauna Kea', 'Mauna Loa', 'Ofu-Olosega', "Ta'u Island", 'Tutuila Island', 'Agrigan', 'Ahyi Seamount', 'Anatahan', 'Pagan', 'Sarigan', 'Yellowstone']

编辑

如果你有更多的数据要取,

代码语言:javascript
运行
复制
[{'name':i['volcName'], 'threat':i['threat']} for i in v]

# result
[{'name': 'Akutan', 'threat': 'Very High Threat'},
 {'name': 'Alaskan Volcanoes', 'threat': None},
 {'name': 'Aniakchak', 'threat': 'High Threat'},
 {'name': 'Atka volcanic complex', 'threat': 'High Threat'},
 {'name': 'Augustine', 'threat': 'Very High Threat'},
....
票数 1
EN

Stack Overflow用户

发布于 2022-10-07 21:18:30

您可以迭代您的数据,并生成一个使用remapped的列表,所有这些都可以很容易地使用列表理解语法。如下所示:

代码语言:javascript
运行
复制
v = requests.get(url2.format()).json()
volcanoes = [dict(name=x['volcName'], threat=x['threat']) for x in v]

# [{'name': 'Akutan', 'threat': 'Very High Threat'},
#  {'name': 'Alaskan Volcanoes', 'threat': None},
#  {'name': 'Aniakchak', 'threat': 'High Threat'},
#  {'name': 'Atka volcanic complex', 'threat': 'High Threat'}, ...
# ]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73992306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档