【问题标题】:Splitting tuple item in a list拆分列表中的元组项
【发布时间】:2013-03-12 17:34:16
【问题描述】:

如何拆分第二个元组

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] 位置的数字保留在元组中。列表理解解决方案将非常受欢迎。有什么建议吗?

【问题讨论】:

    标签: python python-2.7 split tuples


    【解决方案1】:

    您可以使用列表推导:

    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)
    

    【讨论】:

      【解决方案2】:
      newdata = [tuple(s for t in tu for s in t.split(' - ')) for tu in data]
      # [('152', 'Farko', 'Kier'), ('153', 'Park', 'Pub')]
      

      【讨论】:

        【解决方案3】:

        如您所见,您无法修改元组,但是您可以使用所需数据创建一个新的:

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

        【讨论】:

          猜你喜欢
          • 2014-04-27
          • 1970-01-01
          • 2020-05-12
          • 2019-10-20
          • 1970-01-01
          • 1970-01-01
          • 2020-08-24
          • 2018-03-12
          • 2017-07-30
          相关资源
          最近更新 更多