如何从两个并行字符串创建字典?

时间:2012-08-12 00:55:09

标签: python dictionary

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

foo,bar,etc

另一个是这样的:

1,2,3

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

4 个答案:

答案 0 :(得分:10)

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(',')]

答案 1 :(得分:5)

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

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

如果您想将数字数据转换为int,请使用list comprehension

n1 = [int(n) for n in line] # ['1','2','3'] => [1, 2, 3]

答案 2 :(得分: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))

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

答案 3 :(得分:-1)

我刚刚开始,但将两者合并在一起可能会更简单:

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