Python将元组列表的第二部分合并到字符串列表中

Python将元组列表的第二部分合并到字符串列表中,python,string,list,tuples,Python,String,List,Tuples,我最近才开始学习Python,我已经研究了类似的问题,似乎找不到一个有帮助的示例-我目前有一个元组列表: [('E', ['E', 'F', 'C', 'C']), ('F', ['A', 'D', 'D', 'B']), ('I', ['F', 'D', 'F', 'D']), ('R', ['E', 'B', 'D', 'B']), ('S', ['B', 'C', 'C', 'D'])] 我想把它们分成一个字符串列表,这样它们看起来像这样: ['EFCC', 'ADDB', 'FDFD

我最近才开始学习Python,我已经研究了类似的问题,似乎找不到一个有帮助的示例-我目前有一个元组列表:

 [('E', ['E', 'F', 'C', 'C']), ('F', ['A', 'D', 'D', 'B']), ('I', ['F', 'D', 'F', 'D']), ('R', ['E', 'B', 'D', 'B']), ('S', ['B', 'C', 'C', 'D'])]
我想把它们分成一个字符串列表,这样它们看起来像这样:

['EFCC', 'ADDB', 'FDFD', 'EBDB', 'BCCD']
我已尝试为此使用“.join”函数,如下所示:

stringList = "".join([str(x[1]) for x in sortedList])
但这为我提供了一个列表,格式如下:

['B', 'D', 'E', 'C']['B', 'C', 'B', 'D']['E', 'C', 'D', 'C']['B', 'C', 'D', 'C']['C', 'E', 'F', 'A']

我认为我使用的join方法是错误的,但在对其中的一些内容进行了更改后,我无法确定如何获得所需的格式。

使用列表理解并连接字符串,如下所示

t = [('E', ['E', 'F', 'C', 'C']), ('F', ['A', 'D', 'D', 'B']), ('I', ['F', 'D', 'F', 'D']), ('R', ['E', 'B', 'D', 'B']), ('S', ['B', 'C', 'C', 'D'])]

x = [''.join(b) for a, b in t]
print(x)
您可以使用地图:

print map(lambda x: "".join(x[1]),t)
输出:

['EFCC', 'ADDB', 'FDFD', 'EBDB', 'BCCD']
您的问题是
str(x[1])

x[1]
是一个列表,您可以将其转换为字符串:

>>> x = ('E', ['E', 'F', 'C', 'C'])
>>> x[1]
['E', 'F', 'C', 'C']

>>> str(x[1])
"['E', 'F', 'C', 'C']"
您需要加入列表中的元素:

>>> ''.join(x[1])
'EFCC'
因此,您的代码将变成:

[''.join(x[1]) for x in sortedList]

当打印地图时,我得到了,我如何打印它而不只是得到地址?@user3379139:
列表(地图(lambda x::.join(x[1]),t))
。您正在使用Python3,Python3上的
map()
返回一个
map
对象而不是列表。顺便说一下,您仍然可以使用
map
对象作为列表。谢谢您的回答,您能解释一下“for a,b in t”的来源吗?当我收到错误“ValueError:没有足够的值来解包(预期为2,获得1)”,并且不确定要更改什么以避免预期为2时,列表本身就是安全的
t
a
b
保存每个元组的两个元素的值,
a
是单个字符,
b
是列表。尝试打印
[a代表a,b代表t]
[b代表a,b代表t]
。我们在这里感兴趣的是
b
t
是一个包含两个元素的元组。Paul将它们分解为两个变量
a
b
。解包只适用于元素数量与变量数量相同的序列,否则会出现错误。请参阅该错误的最后一段,这意味着您的输入数据中的某些元素在元组中只有一项。可能是这种情况吗?在这种情况下,当不使用解包时,访问元组的第二个索引(即x[1])会导致类似的错误。