如果你能更好地描述你的问题,你可以直接把它翻译成 Python。
您想要成对的行,将每行拆分为单独的数字,并将第一行中的第一个数字映射到第二行中的数字列表。
所以,让我们从配对线开始。(这是唯一棘手的问题——但是关于 SO 有大约 3000 个问题,向您展示了两种简单的方法。)
pairs = zip(*[iter(lines)]*2)
现在,对于每一对:
for first, second in pairs:
... 将每一行分成单独的数字:
first_numbers = map(int, first.split())
second_numbers = map(int, second.split())
...并将第一行中的第一个数字映射到第二行中的数字列表:
d[first_numbers[0]] = second_numbers
>>> lines = '''1 2
... 2 3
... 2 3
... 4 3 1'''.splitlines()
>>> d = {}
>>> pairs = zip(*[iter(lines)]*2)
>>> for first, second in pairs:
... first_numbers = map(int, first.split())
... second_numbers = map(int, second.split())
... d[first_numbers[0]] = second_numbers
>>> d
{1: [2, 3], 2: [4, 3, 1]}
如果您想使用第一行中的第二个数字来验证长度,您可以添加以下内容:
... if first_numbers[1] != len(second_numbers):
... raise ValueError('Expected {}, got {}'.format(
... first_numbers[1], len(second_numbers)))