如何将文本文档转换为键和值的字典?

时间:2018-01-02 22:12:08

标签: python list dictionary

我们假设我有一个文本文档,其中包含行中的数字列表。我如何编写一个读取此文档的函数并返回一个dictonary,其中键表示行,键的值表示某行中的数字,始终以最小的数字开头,同时保留其他行的顺序。

例如,阅读文档:

3
4
1 8 7 6 4
5 2 3 6

应该返回一个包含值的字典:

 {1: [3], 
  2: [4], 
  3: [1, 8, 7, 6, 4], 
  4: [2, 3, 6, 5]}

你看到第四个键,n。 2位于第一位,因为它是文档中第4行中最小的一个,所以顺序反转了一点,而第3行,第2行和第1行没有触及。

我已经开始了这个:

def to_dictionary(filename):
dict1 = {}
with open (filename) as file:

我现在缺乏编写代码的知识,这些代码可以让我将文档转换为所需的字典。

2 个答案:

答案 0 :(得分:0)

您可以使用enumerate

def to_dictionary(filename):
   with open(filename) as f:
      first = {i:list(map(int, a.strip('\n').split())) for i, a in enumerate(f, start=1)} 
      return {a:b[b.index(min(b)):]+b[:b.index(min(b))] for a, b in first.items()}

答案 1 :(得分:0)

下一步是阅读每一行。

lines = file.readlines()

然后你必须拆分空格上的每一行。这会为您提供numbers数组。

for i, line in enumerate(lines):
    numbers = line.split(' ')
    dict1[i + 1] = numbers

所有在一起:

def to_dictionary(filename):
    dict1 = {}
    with open (filename) as file:
        lines = file.readlines()
        for i, line in enumerate(lines):
            numbers = line.split(' ')
            dict1[i + 1] = numbers
    return dict1