如何读取文件并将其排序为字典?

How to read and sort a file to a dict?

我有这样一个文件:

 1909 Ford Model T
 1958 Ford Edsel
 1970 AMC Gremlin
 1978 AMC Pacer

我想将此文件读入字典并按如下方式排序:

 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 函数,实际上我一点头绪都没有。

您可以通过 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)

你可以试试 pandas:

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]}