我试图将一个带有嵌套列表的列表连接起来,但是不使用字典,因为字典不能保持相同的顺序,这有点搞砸了我正在做的事情。不知道这是否可能,但基本上我是:
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)
但是顺序不一样,以后我需要将一些列表匹配在一起...所以我真的希望避免字典部分,任何人有什么想法?
谢谢!
答案 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)
]