如何从文本文件中创建包含键值对的字典

3

我有一个文本文件(one.txt),其中包含任意数量的键值对(其中键和值由冒号分隔 - 例如,x:17)。以下是一些示例(不包括数字):

  1. mattis:turpis
  2. Aliquam:adipiscing
  3. nonummy:ligula
  4. Duis:ultricies
  5. nonummy:pretium
  6. urna:dolor
  7. odio:mauris
  8. lectus:per
  9. quam:ridiculus
  10. tellus:nonummy
  11. consequat:metus

我需要打开文件并创建包含所有键值对的字典。

到目前为止,我已经使用以下方式打开了文件:

file = []
with open('one.txt', 'r') as _:
    for line in _:
        line = line.strip()
        if line:
            file.append(line)

我这样打开文件是为了去除文本文件中的换行符和最后一行的黑线。我已经获得了一个python中键值对的列表。
我不确定如何使用列表中的键值对创建字典。尝试过的所有方法都会出现错误。有些错误信息类似于:
ValueError: 字典更新序列元素#0的长度为1; 需要2
2个回答

5

使用 str.split()

with open('one.txt') as f:
    d = dict(l.strip().split(':') for l in f)

谢谢!这个可行!而且它更为简洁。 - cmal3

2

split()函数可以让你指定分隔符:将键和值分成不同的字符串。然后,你可以使用它们来填充一个字典,例如:mydict

mydict = {}
with open('one.txt', 'r') as _:
    for line in _:
        line = line.strip()
        if line:
            key, value = line.split(':')
            mydict[key] = value
print mydict

输出:

{'mattis': 'turpis', 'lectus': 'per', 'tellus': 'nonummy', 'quam': 'ridiculus', 'Duis': 'ultricies', 'consequat': 'metus', 'nonummy': 'pretium', 'odio': 'mauris', 'urna': 'dolor', 'Aliquam': 'adipiscing'}

谢谢!这个方法很有效。我没有意识到我的脚本可以如此简单地转换成字典。我是编程新手,已经花了大部分时间在这个部分上了。非常感谢! - cmal3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接