如何读取文件并将其排序为字典?
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]}
我有这样一个文件:
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]}