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

时间:2019-06-03 10:43:42

标签: python-2.7 list nested-lists

我试图将一个带有嵌套列表的列表连接起来,但是不使用字典,因为字典不能保持相同的顺序,这有点搞砸了我正在做的事情。不知道这是否可能,但基本上我是:

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)

但是顺序不一样,以后我需要将一些列表匹配在一起...所以我真的希望避免字典部分,任何人有什么想法?

谢谢!

1 个答案:

答案 0 :(得分:2)

您快到了:

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)

仅迭代zip中的对;如果您先将其打包在dict中,它将使python 2的顺序混乱(在python> = 3.4中就可以了!)。

您还可以将所有内容直接打包在列表理解中(并可能使用字符串格式):

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