python - 转换字典python中的列表列表
问题描述
我面临以下问题。我有一个使用以下代码从远程 URL 获得的列表列表:
import csv
import urllib.request
text_url = 'https://www.emidius.eu/fdsnws/event/1/query?starttime=1899-01-01T00:00:00&endtime=1899-01-31T23:59:59&minmag=4&maxmag=9&orderby=time-asc&limit=100&format=text'
with urllib.request.urlopen(text_url) as response:
my_text = response.read().decode()
lines = my_text.splitlines()
reader = csv.reader(lines, delimiter='|')
我可以将阅读器转换为列表列表:
my_list = list(reader)
我正在尝试做的是在列表reader
字典中转换列表列表(或列表本身)。第一个列表的项目应该成为字典键,而从第二个到最后一个元素,我想将字典值作为一个列表:
my_list[0] # dict keys
['#EventID',
'Time',
'Latitude',
'Longitude',
'Depth/km',
'Author',
'Catalog',
'Contributor',
'ContributorID',
'MagType',
'Magnitude',
'MagAuthor',
'EventLocationName']
my_list[1:] # dict values as list
[['quakeml:eu.ahead/event/18990105_0245_000',
'1899-01-05T02:45:--',
'41.500',
'13.783',
'',
'AHEAD',
'SHEEC',
'CPTI04',
'1309',
'Mw',
'4.63',
'SHEEC',
'Pignataro'],
['quakeml:eu.ahead/event/18990118_2048_000',
'1899-01-18T20:48:--',
'46.180',
'14.500',
'4.8',
'AHEAD',
'SHEEC',
'RIBA982',
'',
'Mw',
'4.51',
'SHEEC',
'Vodice Brnik'],
['quakeml:eu.ahead/event/18990122_0956_000',
'1899-01-22T09:56:--',
'37.200',
'21.600',
'',
'AHEAD',
'SHEEC',
'PAPA003',
'',
'Mw',
'6.50',
'SHEEC',
'Kyparissia'],
['quakeml:eu.ahead/event/18990131_1112_000',
'1899-01-31T11:12:--',
'66.300',
'-19.900',
'',
'AHEAD',
'SHEEC',
'AMBSI000',
'',
'Mw',
'5.80',
'SHEEC',
'[N. Iceland]'],
['quakeml:eu.ahead/event/18990131_2345_000',
'1899-01-31T23:45:--',
'60.100',
'5.500',
'30',
'AHEAD',
'SHEEC',
'FEN007',
'',
'Mw',
'4.60',
'SHEEC',
'[Biornafjorden]']]
基本上输出应该是这样的:
d['#EventID'] = ['quakeml:eu.ahead/event/18990105_0245_000', 'quakeml:eu.ahead/event/18990105_0245_000', 'quakeml:eu.ahead/event/18990105_0245_000']
解决方案
尝试这个,
>>> result_dict = {}
>>> for idx, key in enumerate(a):
for val in b:
result_dict.setdefault(key, []).append(val[idx])
输出:
>>> result_dict
{'#EventID': ['quakeml:eu.ahead/event/18990105_0245_000', 'quakeml:eu.ahead/event/18990118_2048_000', 'quakeml:eu.ahead/event/18990122_0956_000', 'quakeml:eu.ahead/event/18990131_1112_000', 'quakeml:eu.ahead/event/18990131_2345_000'], 'Time': ['1899-01-05T02:45:--', '1899-01-18T20:48:--', '1899-01-22T09:56:--', '1899-01-31T11:12:--', '1899-01-31T23:45:--'], 'Latitude': ['41.500', '46.180', '37.200', '66.300', '60.100'], 'Longitude': ['13.783', '14.500', '21.600', '-19.900', '5.500'], 'Depth/km': ['', '4.8', '', '', '30'], 'Author': ['AHEAD', 'AHEAD', 'AHEAD', 'AHEAD', 'AHEAD'], 'Catalog': ['SHEEC', 'SHEEC', 'SHEEC', 'SHEEC', 'SHEEC'], 'Contributor': ['CPTI04', 'RIBA982', 'PAPA003', 'AMBSI000', 'FEN007'], 'ContributorID': ['1309', '', '', '', ''], 'MagType': ['Mw', 'Mw', 'Mw', 'Mw', 'Mw'], 'Magnitude': ['4.63', '4.51', '6.50', '5.80', '4.60'], 'MagAuthor': ['SHEEC', 'SHEEC', 'SHEEC', 'SHEEC', 'SHEEC'], 'EventLocationName': ['Pignataro', 'Vodice Brnik', 'Kyparissia', '[N. Iceland]', '[Biornafjorden]']}
推荐阅读
- javascript - 2 页之间的数据传输。其他页面预填
- javascript - 在 JavaScript 中定义一个类?
- javascript - 在打开页面时将值从 firebase 显示到页面
- javascript - 如何使用 jquery 处理第三部分 iframe 的点击事件?
- mysql - 在 Delphi 中找不到从 ZeosLib 连接到 MYSQL 的 libmysql.dll 和其他人
- python - 将数据保存/加载到/从 .CSV 文件的最佳方式
- css - 添加非拉丁字符时字体会发生变化
- c++ - 模板推演,这符合吗?
- react-native - 如何在 React Native 中播放 vimeo 视频?
- ios - Unity:Xcode 10.1 应用签名不适用于免费帐户