如何将列表更改为词典

2024-10-06 11:20:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在使用python中的API,并试图从某些作者那里检索以前的机构ID

我已经到了这一点

my_auth.hist_names['affiliation']

哪些产出:

[{'@_fa': 'true',
  '@id': '60016491',
  '@href': 'http://api.elsevier.com/content/affiliation/affiliation_id/60016491'},
 {'@_fa': 'true',
  '@id': '60023955',
  '@href': 'http://api.elsevier.com/content/affiliation/affiliation_id/60023955'},
 {'@_fa': 'true',
  '@id': '109604360',
  '@href': 'http://api.elsevier.com/content/affiliation/affiliation_id/109604360'},
 {'@_fa': 'true',
  '@id': '112377026',
  '@href': 'http://api.elsevier.com/content/affiliation/affiliation_id/112377026'},
 {'@_fa': 'true',
  '@id': '112678642',
  '@href': 'http://api.elsevier.com/content/affiliation/affiliation_id/112678642'},
 {'@_fa': 'true',
  '@id': '60031106',
  '@href': 'http://api.elsevier.com/content/affiliation/affiliation_id/60031106'}]

这里的类型是列表

我想用这个列表作为字典来检索 '@id' 部分


Tags: comapiidtruehttp列表机构作者
3条回答

数据是JSON格式的,您可以使用python的JSON库来处理它们

https://www.geeksforgeeks.org/python-convert-string-dictionary-to-dictionary/

import json
result_dict = json.load(given_string)

您可以简单地将dict列表加载为带有pandas的数据帧

import pandas as pd
my_auth.hist_names['affiliation']
df = pd.Dataframe(my_auth.hist_names['affiliation'])
print(df['@id'])

通过这种方式,您可以获得一个数据集,其中每一行都是列表的一个字典,您可以按列对'@id'进行索引

使用pd.Dataframe(my_auth.hist_names['affiliation']),您可以获得

   @_fa        @id                                              @href
0  true   60016491  http://api.elsevier.com/content/affiliation/af...
1  true   60023955  http://api.elsevier.com/content/affiliation/af...
2  true  109604360  http://api.elsevier.com/content/affiliation/af...
3  true  112377026  http://api.elsevier.com/content/affiliation/af...
4  true  112678642  http://api.elsevier.com/content/affiliation/af...
5  true   60031106  http://api.elsevier.com/content/affiliation/af...

对于df['@id'],您的id

0     60016491
1     60023955
2    109604360
3    112377026
4    112678642
5     60031106
Name: @id, dtype: object

一种简单的方法是使用list comprehension,,它基于iterable的元素创建一个新列表。使用此功能的实现可以是:

ids = [item['@id'] for item in my_auth.hist_names['affiliation']]

这将创建一个列表,其中包含与@id键关联的每个值

相关问题 更多 >