我有一个这样的文件:
1909 Ford Model T
1958 Ford Edsel
1970 AMC Gremlin
1978 AMC Pacer
我想把这个文件读成dict并按下面的方式排序:
Ford : ['1909', '1958']
AMC : ['1970', '1978']
我试过了:
def get_worst_manufacturer_dict(filename):
car_dict = {}
with open(filename) as f:
for key in f:
if key == key:
return car_dict
def test_get_worst_manufacturer_dict():
car_dict = get_worst_manufacturer_dict('cars.txt')
for key in sorted(car_dict):
print (key, ':', car_dict[key])
test_get_worst_manufacturer_dict()
我不知道如何修复我的第一个def函数,我实际上没有线索。
答案 0 :(得分:3)
您可以使用str.split()
进行Py3扩展解包。这假设所有manufacturer
只是一个单词:
from collections import defaultdict
def get_worst_manufacturer_dict(filename):
car_dict = defaultdict(list)
with open(filename) as f:
for line in f:
year, manufacturer, *model = line.split()
car_dict[manufacturer].append(year)
return car_dict
这使用defaultdict(list)
来保留年份,如有必要,您可以转换回dict
return dict(car_dict)
答案 1 :(得分:0)
你可以试试熊猫:
import pandas as pd
df = pd.read_csv('your.csv',sep=" ", header=None)
df
你df
:
0 1 2 3
0 1909 Ford Model T
1 1958 Ford Edsel NaN
2 1970 AMC Gremlin NaN
3 1978 AMC Pacer NaN
然后使用:
df.groupby(1)[0].apply(list).to_dict()
它会给你:
{'AMC': [1970, 1978], 'Ford': [1909, 1958]}