다음 문제에 직면 해 있습니다. 다음 코드를 사용하여 원격 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']
csv.DictReader
및 사용dict.setdefault
전의:
import csv
d = {}
reader = csv.DictReader(lines, delimiter='|')
for row in reader: #Iterate Each row
for k, v in row.items(): #Iterate Key-Value
d.setdefault(k, []).append(v)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다