代码之家  ›  专栏  ›  技术社区  ›  Chris Charley

使用字典理解将关键字、值从文件解析为字典

  •  3
  • Chris Charley  · 技术社区  · 5 年前

    我在这个网站上寻找过类似我的例子,但找不到答案。

    我要解析的文件是一个简单的文件,其键值对由冒号分隔。

    one:two
    three:four
    five:six
    seven:eight
    nine:ten
    sample:demo
    

    我认为应该有一个简单的解决方法来理解字典。

    我的第一次尝试是

    fin = open('f00.txt', 'r')

    L = {kv[0]:kv[1] for line in fin for kv in line.strip().split(':')}

    这产生了

    {'o': 'n', 't': 'e', 'f': 'i', 's': 'a', 'e': 'i', 'n': 'i', 'd': 'e'}

    唯一能得到结果的方法是

    L = {line.strip().split(':')[0]:line.strip().split(':')[1] for line in fin}

    但那需要打电话 split 两次(索引为0和1)

    另一种方法是:

    d = {}
    for line in fin:
        kv = line.strip().split(':')
        d[kv[0]] = kv[1]
    

    {'one': 'two', 'three': 'four', 'five': 'six', 'seven': 'eight', 'nine': 'ten', 'sample': 'demo'}

    只是想知道是否有一个简单的理解什么是一个微不足道的任务。

    感谢您提供的任何输入。

    2 回复  |  直到 5 年前
        1
  •  3
  •   Ajax1234    5 年前

    你可以用 dict 理解一下:

    result = dict(i.strip('\n').split(':') for i in open('filename.txt'))
    

    输出:

    {'one': 'two', 'three': 'four', 'five': 'six', 'seven': 'eight', 'nine': 'ten', 'sample': 'demo'}
    
        2
  •  1
  •   brentertainer    5 年前
    with open('f00.txt', 'r') as fh:
        d = dict(line.strip().split(':') for line in fh)