簡體   English   中英

在Python中將字符串轉換為列表或字典

[英]Converting a string into a list or dict in Python

我需要打破對值的界限,並將其轉換為列表或字典。 有誰知道在Python中執行此操作的簡單方法?

由此:

1
Petrov
2
Ivanov
3
Sidorov

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

或字典式:

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

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

此代碼將為您返回字典:

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))

通過處理列表中的奇數和偶數項,為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數組中切割偶數/奇數行的最短方法?

>>> 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']]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM