我正在尝试读取文本文件并将文件中的数字对转换为集合列表。
以下是我的文本文件:
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'}]
答案 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)]