【问题标题】:Converting a file into a dictionary with one key and multiple values将文件转换为具有一个键和多个值的字典
【发布时间】:2013-10-20 04:10:16
【问题描述】:

我有一个如下所示的数据文件:

我想将第一列变成键,并将键之后的值变成字典的值。

这是我使用的代码,但它没有给我想要的。

with open('data.txt', 'r') as f:
    ...: 
    ...:     for line in f:
    ...:         items = line.split()
    ...:         key, values = items[0], items[1:]
    ...:         my_dict[int(key)] = values

【问题讨论】:

  • 在什么意义上不是你想要的?
  • 也许你的意思是my_dict[int(key)] = map(int,values)
  • 更一般地,请以实际可复制文本而不是屏幕截图的形式提供示例输入,以及预期和实际输出。
  • 我怀疑它不起作用,因为键不是唯一的。数据的第一列中有很多重复值(我假设屏幕截图中看到的第一个数字是来自编辑器的行号,而不是数据文件本身的一部分)。

标签: python dictionary text-files


【解决方案1】:

假设您尝试连接具有相同键的行中的其他值而不是覆盖它们,您可以使用:

for line in f:
    items = line.split()
    key, values = int(items[0]), items[1:]
    my_dict.setdefault(key, []).extend(values)

【讨论】:

  • 更优雅的连接是:my_dict.setdefault(key, []).extend(values)(或者您可以使用defaultdict 使其更简单)。
  • 或至少mydict.get(key, [])。在 Python 中通常不需要以这种方式滥用 or
  • @kojiro:blckknght 已经说过了。但是 defaultdict 并不比 setdefault 更简单(或更简单);重要的是在构建过程结束时您是否需要常规字典或默认字典。
猜你喜欢
  • 1970-01-01
  • 2023-03-16
  • 2014-04-06
  • 2019-05-05
  • 2018-06-24
  • 2019-07-12
  • 2016-12-27
  • 1970-01-01
  • 2019-07-02
相关资源
最近更新 更多