将集合分解为集合列表

时间:2017-04-24 16:04:44

标签: python

我正在尝试读取文本文件并将文件中的数字对转换为集合列表。

以下是我的文本文件:

4 #Number of pairs  
1 2
4 5
2 3
3 4

我已经能够将文本文件中的数据转换为列表,然后将其转换为集合,但最终我得到了一个庞大的集合而不是像我想要的集合列表。

以下是我的代码目前的样子:

Input_File = input("Enter your file: ").lower()
with open(Input_File, 'r') as f:
    first_line = f.readline()
    data = f.read().splitlines()

set_of_pairs = set(data)
print(set_of_pairs)

当前输出:

{'1 2', '2 3', '4 5', '3 4'}

期望的输出:

[{'1 2'}, {'2 3'}, {'4 5'}, {'3 4'}]

1 个答案:

答案 0 :(得分:2)

如果你真的想要一个单元素集的列表(看起来不太有用),你可以写:

Input_File = input("Enter your file: ").lower()
with open(Input_File, 'r') as f:
    first_line = f.readline()
    data = f.read().splitlines()

set_of_pairs = [{line} for line in data]
print(set_of_pairs) #=> [{'1 2'}, {'2 3'}, {'4 5'}, {'3 4'}]

但是,您似乎更希望每个包含两个整数的集合列表,如:

Input_File = input("Enter your file: ").lower()
with open(Input_File, 'r') as f:
    first_line = f.readline()
    data = f.read().splitlines()

set_of_pairs = [{int(n) for n in line.split()} for line in data]
# Note that the order of pairs is not guaranteed
print(set_of_pairs) #=> [{1, 2}, {2, 3}, {4, 5}, {3, 4}]

甚至是元组列表:

Input_File = input("Enter your file: ").lower()
with open(Input_File, 'r') as f:
    first_line = f.readline()
    data = f.read().splitlines()

set_of_pairs = [tuple(line.split()) for line in data]
print(set_of_pairs) #=> [(1, 2), (2, 3), (4, 5), (3, 4)]