如何将列表中的元素与另一个嵌套列表连接起来?

How to concatenate elements from a list with another nested list?

提问人:LoC 提问时间:6/3/2019 更新时间:6/3/2019 访问量:218

问:

我正在尝试将列表与嵌套列表连接起来,但不使用字典,因为字典没有保持相同的顺序,这有点搞砸了我正在做的事情。不确定这是否可能,但基本上我所拥有的是:

list1=['a','b','c','d','e']
list2=[['1','2','3'],['4','5','6'],['7','8','9'],['T1','T2','T3'],[]]

我需要的输出是:

[['a_1','a_2','a_3'],['b_4','b_5','b_6'],['c_7','c_8','c_9'],['d_T1','d_T2','d_T3'],['e']]

我能够用带有此代码的字典来做到这一点:

dict = dict(zip(list1, list2))
for key,values in dict.iteritems():
    vals = dict[key]
    values = [key + '_' + str(v) for v in vals]
    test.append(values)

但是顺序不一样,以后需要将一些列表匹配在一起......所以我真的宁愿避免字典部分,有人知道吗?

谢谢!

python-2.7 列表 嵌套列表

评论


答:

2赞 hiro protagonist 6/3/2019 #1

你快到了:

test = []
for key, values in zip(list1, list2):
    if values:
        values = [key + "_" + str(v) for v in values]
        test.append(values)
    else:
        test.append([key])
print(test)

只需遍历 ;如果你把它放在第一个,它会打乱 Python 2 中的顺序(在 Python >= 3.4 中,你没问题!zipdict

您也可以直接将所有这些打包到列表推导式中(并可能使用字符串格式):

test = [
    ["{}_{}".format(key, v) for v in values] if values else [key]
    for key, values in zip(list1, list2)
]