Converting dictionary value from tuple to a list (python)
本问题已经有最佳答案,请猛点这里访问。
所以我有一个
CAR|PRICE|RPM
TOYOTA|21,000|3,600
HONDA|19,000|4,000
号
通过将此数据文件传递到函数
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]} |
。
您可以简单地用括号将值括起来,使其成为一个
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']} |
号