如何拆分第二元组
data = [('152', 'Farko', 'Kier'), ('153', 'Park - Pub')]
获得此输出:
[('152', 'Farko', 'Kier'), ('153', 'Park', 'Pub')]
我试过这种方式:
lst = []
for i in data:
if len(i) == 2:
i[1] = tuple(i[1].split(' - '))
lst.append(i)
除了引发异常TypeError: 'tuple' object does not support item assignment
之外,它都有效。但我无法分配i = tuple(i[1].split(' - '))
,因为我需要保留位于元组i[0]
的数字。列表comprehansion解决方案将非常受欢迎。建议?
答案 0 :(得分:2)
您可以使用列表理解:
lst = [t[:1] + tuple(t[1].split(' - ')) if len(t) == 2 else t for t in data]
或者您可以调整循环以创建新元组:
for i in data:
if len(i) == 2:
i = i[:1] + tuple(i[1].split(' - '))
lst.append(i)
答案 1 :(得分:2)
newdata = [tuple(s for t in tu for s in t.split(' - ')) for tu in data]
# [('152', 'Farko', 'Kier'), ('153', 'Park', 'Pub')]
答案 2 :(得分:1)
如您所见,您无法修改元组,但您可以使用所需数据创建一个新元组:
data = [('152', 'Farko', 'Kier'), ('153', 'Park - Pub')]
lst = []
for i in data:
if len(i) == 2:
i = i[:1] + tuple(i[1].split(' - '))
lst.append(i)
或者如果您想修改原始列表:
for i, tup in enumerate(data):
if len(tup) == 2:
data[i] = tup[:1] + tuple(tup[1].split(' - '))