将字典值从元组转换为列表(python)

Converting dictionary value from tuple to a list (python)

本问题已经有最佳答案,请猛点这里访问。

所以我有一个data.txt文件,它保存了关于一辆车的信息:

CAR|PRICE|RPM

TOYOTA|21,000|3,600

HONDA|19,000|4,000

通过将此数据文件传递到函数createCarDictionary中,我可以创建一个字典,创建汽车品牌作为键,值作为存储为元组的txt文件中的剩余信息:

1
2
3
4
5
6
7
8
9
10
11
12
dict1 = {}

def createCarDictionary(datafile):
    for line in datafile.splitlines():
        key, value, value2 = map(str.strip, line.split('|'))
        dict1[key] = value, value2
    return dict1

datafile = open('data.txt', 'r').read()

createCarDictionary(datafile)
print(dict1)

产量

1
{'CAR': ('PRICE', 'RPM'), 'TOYOTA': ('21,000', '3,600'), 'HONDA': ('19,000', '4,000')}

所以我的问题是:我必须在函数中添加什么:1)删除数字中的逗号;2)将元组值转换为列表,以便稍后操作它们。


单向,更改:

埃多克斯1〔3〕

到:

江户十一〔四〕号

但如果你向新图书馆开放,你也可以使用熊猫:

1
2
3
4
5
6
7
8
9
10
11
12
import pandas as pd

filedata = '''\
CAR|PRICE|RPM
TOYOTA|21,000|3,600
HONDA|19,000|4,000'''


fileobj = pd.compat.StringIO(filedata) # change this to the path of your file
df = pd.read_csv(fileobj, sep='|', thousands=',')
d = dict(zip(df.pop('CAR'), df.values.tolist()))
#d = df.set_index('CAR').to_dict('i') # OR MAYBE THIS?
print(d)

返回:

1
{'TOYOTA': [21000, 3600], 'HONDA': [19000, 4000]}


您可以简单地用括号将值括起来,使其成为一个list,而不是tuple,并使用replace()从每行中删除"all"。

1
2
3
4
5
6
7
8
9
10
11
12
13
dict1 = {}

def createCarDictionary(datafile):
    for line in datafile.splitlines():
        line = line.replace(',', '')
        key, value, value2 = map(str.strip, line.split('|'))
        dict1[key] = [value, value2]
    return dict1

datafile = open('data.txt', 'r').read()

createCarDictionary(datafile)
print(dict1)

输出:

1
{'HONDA': ['19000', '4000'], 'TOYOTA': ['21000', '3600'], 'CAR': ['PRICE', 'RPM']}