8

我有两个文本文件,格式如下:

foo,bar,etc

另一个是这样的:

1,2,3

我想将这两个文本文件放入一个 Python 字典中,而不必手动完成每个文件。我希望输出将字符串连接到数字。有没有办法做到这一点?

4

4 回答 4

12
keys = first_string.split(',')
values = second_string.split(',')
output_dict = dict(zip(keys, values))

>>> first_string = "foo,bar,etc"
>>> second_string = "1,2,3"
>>> keys = first_string.split(',')
>>> values = second_string.split(',')
>>> output_dict = dict(zip(keys, values))
>>> output_dict
{'etc': '3', 'foo': '1', 'bar': '2'}

如果您希望这些值是实际数字,您可以转换它们:

values = [int(v) for v in second_string.split(',')]
于 2012-08-12T00:56:57.040 回答
6

假设您知道如何从文件中读取数据并将行拆分为列表,并int根据需要将它们转换为 s。

s1 = ['foo', 'bar', 'etc']
n1 = [1, 2, 3]
dict(zip(s1, n1))

产量:

{'bar': 2, 'etc': 3, 'foo': 1}

备注

zip()结合您的列表:

zip(s1, n1)
[('foo', 1), ('bar', 2), ('etc', 3)]

如果您不习惯从行数据创建列表,对于使用split()的给定行,您可以这样做

line = line.split(',') #'foo,bar,etc' => ['foo','bar','etc'] / '1,2,3' => ['1','2','3']

如果你想将你的数字数据转换为ints 使用列表理解

n1 = [int(n) for n in line] # ['1','2','3'] => [1, 2, 3]
于 2012-08-12T00:56:48.597 回答
1

您可以直接从文本文件中读取值和键,示例代码如下:

import fileinput

keys = []
values = []

for line in fileinput.input(['v.txt']):
    values = values + [int(v) for v in line.split(',')]

for line in fileinput.input(['k.txt']):
    keys = keys + [k.replace("\n","") for k in line.split(',')]

the_dict = dict(zip(keys, values))

我假设您需要将值作为整数,并且文本文件可能包含多行但它们必须包含相同数量的元素。

于 2012-08-12T02:28:17.637 回答
-1

我刚刚开始,但将两者一起运行在一行中可能更简单:

string_dict = {'etc': '3', 'foo': '1', 'bar': '2'}
于 2018-02-04T04:07:34.787 回答