Python 2.7.2中一系列嵌套列表的连接字符串

Python 2.7.2中一系列嵌套列表的连接字符串,python,Python,我有一系列列表,其中包含一个整数和一个包含多个字符串的嵌套列表。目标是将字符串连接成一个字符串。我已经用一个列表上的代码完成了这项工作。问题是,当我尝试迭代一系列列表时,出现了一个错误:“TypeError:sequence item 0:expected string,int found.”我尝试将整数更改为字符串,忽略整数项并将代码定向到嵌套列表,但没有成功 系列示例: [19497, ['83', 'CLM']] [19498, ['80', 'COS', 'PAN', '

我有一系列列表,其中包含一个整数和一个包含多个字符串的嵌套列表。目标是将字符串连接成一个字符串。我已经用一个列表上的代码完成了这项工作。问题是,当我尝试迭代一系列列表时,出现了一个错误:“TypeError:sequence item 0:expected string,int found.”我尝试将整数更改为字符串,忽略整数项并将代码定向到嵌套列表,但没有成功

系列示例:

    [19497, ['83', 'CLM']]
    [19498, ['80', 'COS', 'PAN', '83', 'CLM']]
    [19505, ['79', 'MXE', 'MXN', 'MXS']]
    [19507, ['83', 'CLM', 'ECU']]
    [19509, ['79', 'MXG', 'MXS', 'MXT', '80', 'BLZ', 'GUA', 'HON', 'NIC']]
这适用于一个列表:

    >>> q = [48, ['40', 'ASS', 'EHM', 'IND', 'NEP', 'WHM', '41', 'MYA']]
    >>> q[1] = " ".join(q[1])
    >>> q
    [48, '40 ASS EHM IND NEP WHM 41 MYA']
这就是我在迭代中尝试的,并得到了类型错误

    def smush(q):
        '''STILL IN PROGRESS: Trying to create single string in nested list.'''
        for line in q:
            q[1] = ' '.join(q[1])
        return q
我觉得有一个简单的解决办法,我忽略了。建议

感谢您提供的任何帮助。

您真的很接近:

def smush(lists):
    for line in lists:
        line[1] = ' '.join(line[1])
    return lists # optional, since this modifies the list in-place
如果每个项目都是正好由两个元素组成的列表,则应改为使用,如下所示:

data = [    
    (19497, ['83', 'CLM']),
    (19498, ['80', 'COS', 'PAN', '83', 'CLM']),
    (19505, ['79', 'MXE', 'MXN', 'MXS']),
    (19507, ['83', 'CLM', 'ECU']),
    (19509, ['79', 'MXG', 'MXS', 'MXT', '80', 'BLZ', 'GUA', 'HON', 'NIC']),
]

dataInStringFormat = [(n, ''.join(l)) for n,l in data]
你真的很接近:

def smush(lists):
    for line in lists:
        line[1] = ' '.join(line[1])
    return lists # optional, since this modifies the list in-place
如果每个项目都是正好由两个元素组成的列表,则应改为使用,如下所示:

data = [    
    (19497, ['83', 'CLM']),
    (19498, ['80', 'COS', 'PAN', '83', 'CLM']),
    (19505, ['79', 'MXE', 'MXN', 'MXS']),
    (19507, ['83', 'CLM', 'ECU']),
    (19509, ['79', 'MXG', 'MXS', 'MXT', '80', 'BLZ', 'GUA', 'HON', 'NIC']),
]

dataInStringFormat = [(n, ''.join(l)) for n,l in data]

我假设您有一个嵌套列表,如下所示:

x = [[19497, ['83', 'CLM']],
[19498, ['80', 'COS', 'PAN', '83', 'CLM']],
[19505, ['79', 'MXE', 'MXN', 'MXS']],
[19507, ['83', 'CLM', 'ECU']],
[19509, ['79', 'MXG', 'MXS', 'MXT', '80', 'BLZ', 'GUA', 'HON', 'NIC']]]
在这种情况下,您需要像这样迭代:

for li in x:
    smush(li)
    print(li)

我假设您有一个嵌套列表,如下所示:

x = [[19497, ['83', 'CLM']],
[19498, ['80', 'COS', 'PAN', '83', 'CLM']],
[19505, ['79', 'MXE', 'MXN', 'MXS']],
[19507, ['83', 'CLM', 'ECU']],
[19509, ['79', 'MXG', 'MXS', 'MXT', '80', 'BLZ', 'GUA', 'HON', 'NIC']]]
在这种情况下,您需要像这样迭代:

for li in x:
    smush(li)
    print(li)

以下是可以正常工作的方法(无任何错误处理):


以下是可以正常工作的方法(无任何错误处理):

A会简明扼要地做你想做的事:

a = [[19497, ['83', 'CLM']],
     [19498, ['80', 'COS', 'PAN', '83', 'CLM']],
     [19505, ['79', 'MXE', 'MXN', 'MXS']],
     [19507, ['83', 'CLM', 'ECU']],
     [19509, ['79', 'MXG', 'MXS', 'MXT', '80', 'BLZ', 'GUA', 'HON', 'NIC']]]

def smush(q):
    '''Implemented as a list comprehension.'''
    return [[x[0], ' '.join(x[1])] for x in q]
因此,假定
a
定义为上面的嵌套列表,那么当传递到
smush
时,它将返回:

In [1]: smush(a)
Out[1]: 
[[19497, '83 CLM'],
 [19498, '80 COS PAN 83 CLM'],
 [19505, '79 MXE MXN MXS'],
 [19507, '83 CLM ECU'],
 [19509, '79 MXG MXS MXT 80 BLZ GUA HON NIC']]
如中所述:

列表理解提供了在中创建列表的更简洁的方法 map()和filter()和/或嵌套循环 目前正在使用

A会简明扼要地做你想做的事:

a = [[19497, ['83', 'CLM']],
     [19498, ['80', 'COS', 'PAN', '83', 'CLM']],
     [19505, ['79', 'MXE', 'MXN', 'MXS']],
     [19507, ['83', 'CLM', 'ECU']],
     [19509, ['79', 'MXG', 'MXS', 'MXT', '80', 'BLZ', 'GUA', 'HON', 'NIC']]]

def smush(q):
    '''Implemented as a list comprehension.'''
    return [[x[0], ' '.join(x[1])] for x in q]
因此,假定
a
定义为上面的嵌套列表,那么当传递到
smush
时,它将返回:

In [1]: smush(a)
Out[1]: 
[[19497, '83 CLM'],
 [19498, '80 COS PAN 83 CLM'],
 [19505, '79 MXE MXN MXS'],
 [19507, '83 CLM ECU'],
 [19509, '79 MXG MXS MXT 80 BLZ GUA HON NIC']]
如中所述:

列表理解提供了在中创建列表的更简洁的方法 map()和filter()和/或嵌套循环 目前正在使用


它不应该是
smush()中的
q[1]
而不是
q[1]
?否则,就不太清楚您要做什么:在
smush()
q
的值是多少,结果应该是什么?它不应该是
line[1]
而不是
smush()
中的
q[1]
?否则,就不清楚您要做什么:在
smush()
q
的值是多少,结果应该是什么?考虑到原来的
smush(list)
方法已经迭代了整个列表集合,没有必要再次迭代它们;你会搞乱单个元素,这就是为什么我说假设它是一个嵌套列表。如果您试图直接在我上面发布的内容上使用
smush(x)
,您会得到一个
TypeError:sequence item 0:expected string,int find
,这正是OP所抱怨的。考虑到原来的
smush(lists)
方法已经在整个列表集合上迭代,没有必要再次重复它们;你会搞乱单个元素,这就是为什么我说假设它是一个嵌套列表。如果您试图直接在我上面发布的内容上使用
smush(x)
,您会得到一个
TypeError:sequence item 0:expected string,int found
,这正是OP所抱怨的。如果
smush(lst)
修改
lst
,那么它可能会返回
None
。如果
smush(lst)
就地修改
lst
,然后它可能会返回
None