Python,如何使用文件中的行作为字典中的键,使用下一行的值?

MrR*_*ken 1 python dictionary file

我有这样一个文件:

   Ben
   0 1 5 2 0 1 0 1
   Tim
   3 2 1 5 4 0 0 1
Run Code Online (Sandbox Code Playgroud)

我想创建一个如下所示的字典:

    {Ben: 0 1 5 2 0 1 0 1, Tim : 3 2 1 5 4 0 0 1}
Run Code Online (Sandbox Code Playgroud)

所以我想的是:

   for line in file:
       dict[line] = line + 1
Run Code Online (Sandbox Code Playgroud)

但你不能遍历这样的文件,那么我该如何去做呢?

Hai*_* Vu 6

这可能是你想要的:

dict_data = {}
with open('data.txt') as f:
    for key in f:
        dict_data[key.strip()] = next(f).split()

print dict_data
Run Code Online (Sandbox Code Playgroud)

输出:

{'Tim':['3','2','1','5','4','0','0','1'],'Ben':['0','1 ','5','2','0','1','0','1']}

讨论

  • for循环假设每一行都是一个键,我们将读取循环体中的下一行
  • key.strip() 将'添加'改为'添'
  • f.next() 读取并返回下一行 - 关键行后面的行
  • f.next().split() 因此将该行拆分为一个列表
  • dict_data[key.strip()] = ... 会做类似的事情: dict_data['Tim'] = [ ... ]

更新

  • 感谢Blckknght的指针.我换f.next()next(f)

更新2

如果要将列表转换为整数列表而不是字符串,则代替:

        dict_data[key.strip()] = next(f).split()
Run Code Online (Sandbox Code Playgroud)

做这个:

        dict_data[key.strip()] = [int(i) for i in next(f).split()]
Run Code Online (Sandbox Code Playgroud)