【问题标题】:Read contents of a text file into a dictionary将文本文件的内容读入字典
【发布时间】:2015-12-06 21:45:28
【问题描述】:

我的文本文件内容如下:

a 0 45 124 234 53 12 34
a 90 294 32 545 190 87
a 180 89 63 84 73 63 83

如何将内容读入字典,使a0 成为键,其余为值。我希望我的字典看起来像这样:

{a0: [45, 124, 234, 53, 12, 34], a90: [294, 32, 545, 190, 87], a180: [89, 63, 84, 73, 63, 83]}

我尝试过删除分隔符的传统方法,然后 将其存储在字典中,如下所示

newt = {}
newt = {t[0]: t[1:] for t in data}

但在这里我只得到a 作为键

【问题讨论】:

  • 到目前为止你尝试了什么?
  • 所以不是代码编写服务。请展示您的尝试,我们很乐意为您提供帮助
  • 您能否展示打开和读取文件的代码,而不尝试对内容进行任何操作?
  • 我投票结束这个问题,因为没有代码。

标签: python python-2.7


【解决方案1】:

这可能会对你有所帮助(毕竟是圣诞节的时候)

d = {}
with open("dd.txt") as f:
    for line in f:
        els = line.split()
        k = ''.join(els[:2])
        d[k] = list(map(int,els[2:]))
print(d)

输入文件为

a 0 45 124 234 53 12 34
a 90 294 32 545 190 87
a 180 89 63 84 73 63 83

它产生

{'a90': [294, 32, 545, 190, 87],
 'a180': [89, 63, 84, 73, 63, 83],
 'a0': [45, 124, 234, 53, 12, 34]}

它实际上是从文件中读取每一行,然后将其拆分成块,忽略空格。

然后它使用前两个元素组成键,其余元素组成一个列表,将每个元素转换为整数。

我假设您希望将数字作为整数。如果您希望它们作为字符串,您可以忽略转换为int

d[k] = els[2:]

【讨论】:

    【解决方案2】:

    如果你喜欢单线(一种):

    with open('my_file.txt') as f:
        res = {''.join(r.split(None, 2)[:2]): [int(x) for x in r.split()[2:]] for r in f}
    
    >>> res
    {'a0': [45, 124, 234, 53, 12, 34],
     'a180': [89, 63, 84, 73, 63, 83],
     'a90': [294, 32, 545, 190, 87]}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-28
      • 1970-01-01
      • 1970-01-01
      • 2011-03-05
      • 2013-12-23
      • 1970-01-01
      • 2017-07-21
      相关资源
      最近更新 更多