キーと値のペアの文字列がありますが、残念ながら同じ記号で区切られています。ラムダを使用せずに、タプルのリストに「分割」する方法はありますか?
これが私が持っているものです:
Moscow|city|London|city|Royston Vasey|vilage
私が欲しいもの:
[("Moscow","city"), ("London", "city")....]
これは本当に簡単なものです...
まず、文字列を分割し、'|'
次にzip
他のすべての要素を分割します。
data = s.split('|')
print zip(data[::2],data[1::2])
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]
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))
出力は[('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')]
Python3list(zip(...))
はもちろん必要です
あなたが望むものを達成するためにcity, status, remaining = s.split("|", 2)
、いくつかの再帰的な方法を使用することができcity_split(s)
ます。