0

我需要打破对值的行并将其转换为列表或字典。有谁知道在 Python 中执行此操作的简单方法?

由此:

1
Petrov
2
Ivanov
3
Sidorov

["1", "Petrov"], ["2", "Ivanov"], ["3", "Sidorov"]

或字典:

{"1": "Petrov", "2": "Ivanov", "3": "Sidorov"}
4

4 回答 4

3
>>> strs = """1                            
Petrov
2
Ivanov
3
Sidorov"""
>>> dict(zip(*[iter(strs.splitlines())]*2))
{'2': 'Ivanov', '3': 'Sidorov', '1': 'Petrov'}

相关:如何zip(*[iter(s)]*n)在 Python 中工作?

于 2013-10-20T17:39:20.027 回答
0
>>> strs = """1                            
Petrov
2
Ivanov
3
Sidorov"""
>>> i = iter(strs.split())
>>> {item: i.next() for item in i}
{'1': 'Petrov', '3': 'Sidorov', '2': 'Ivanov'}

或者

>>> i = iter(strs.split())
>>> [[item, i.next()] for item in i]
[['1', 'Petrov'], ['2', 'Ivanov'], ['3', 'Sidorov']]
于 2013-10-20T20:16:20.210 回答
0

通过操作列表中的奇数项和偶数项,为 hcwhsa 的解决方案添加了一点变化:

>>> s = "1\nPetrov\n2\nIvanov\n3\nSidorov"
>>> dict(zip(s.split("\n")[::2], s.split("\n")[1::2]))
{'1': 'Petrov', '3': 'Sidorov', '2': 'Ivanov'}

请参阅从 python 数组中分割偶数/奇数行的最短方法?

于 2013-10-20T17:56:06.880 回答
0

此代码将为您返回一个字典:

inp = open("file")
d = dict()
k = list()
v = list()
for line in inp:
    if line.strip("\n").isdigit():
        k.append(line.strip("\n"))
    else:
        v.append(line.strip("\n"))
print dict(zip(k,v))
于 2013-10-20T17:48:24.293 回答