Ibo*_*lit 2 python split tuples
我有一串键值对,不幸的是用相同的符号分隔.有没有办法将它"拆分"成元组列表,而不使用lambda?
这是我有的:
Moscow|city|London|city|Royston Vasey|vilage
Run Code Online (Sandbox Code Playgroud)
我想要的是:
[("Moscow","city"), ("London", "city")....]
Run Code Online (Sandbox Code Playgroud)
mgi*_*son 11
这真的很容易......
第一,拆分对串'|'然后zip每隔一个元素一起:
data = s.split('|')
print zip(data[::2],data[1::2])
Run Code Online (Sandbox Code Playgroud)
在python3中,您将需要: print(list(zip(data[::2],data[1::2]))
s = 'Moscow|city|London|city|Royston Vasey|vilage'
it = iter(s.split('|'))
print [(x,next(it)) for x in it]
Run Code Online (Sandbox Code Playgroud)
def group(lst, n):
for i in range(0, len(lst), n):
val = lst[i:i+n]
if len(val) == n:
yield tuple(val)
a = 'Moscow|city|London|city|Royston Vasey|vilage'
list(group(a.split('|'), 2))
Run Code Online (Sandbox Code Playgroud)
输出是 [('Moscow', 'city'), ('London', 'city'), ('Royston Vasey', 'vilage')]
对于Python2
>>> s = "Moscow|city|London|city|Royston Vasey|vilage"
>>> zip(*[iter(s.split('|'))]*2)
[('Moscow', 'city'), ('London', 'city'), ('Royston Vasey', 'vilage')]
Run Code Online (Sandbox Code Playgroud)
list(zip(...))当然需要Python3