我是python的新手,我无法实现这一点。
我有两个列表列表:
list1 = [['user1', 'id1'], ['user2', 'id2'], ['user3', 'id3']...]
list2 = [['id1', 'group1'], ['id1', 'group2'], ['id2', 'group1'], ['id2', 'group4']...]
我需要的是一个这样的单一列表:
[['user1','id1','group1'],['user1','id1','group2'],['user2','id2','group1']]
我想我可以迭代所有列表并比较值,但我认为必须有一些内置函数允许我在列表列表中搜索一个值并返回键或类似的东西。但我无法找到多维列表的任何内容。
请注意,第一个列表中的idN值不一定存在于第二个列表中。
感谢您的帮助!
答案 0 :(得分:2)
python中没有这样的东西。 numpy
中有多维数组的方法,但它们并不适合文本。
您的第二个列表充当字典,因此请创建一个
dict2 = {key:value for key, value in list2}
然后
new_list = [[a, b, dict2[b]] for a, b in list1]
答案 1 :(得分:0)
如果必须使用列表列表,可以使用理解来实现此目的。
list1 = [['user1', 'id1'], ['user2', 'id2']]
list2 = [['id1', 'group1'], ['id1', 'group2'], ['id2', 'group1'], ['id2', 'group4']]
listOut = [[x[0],x[1],y[1]] for x in list1 for y in list2 if x[1] == y[0]]
output => [['user1', 'id1', 'group1'], ['user1', 'id1', 'group2'], ['user2', 'id2', 'group1'], ['user2', 'id2', 'group4']]
答案 2 :(得分:0)
您可以尝试以下代码:
list1 = [['user1', 'id1'], ['user2', 'id2'], ['user3', 'id3']]
list2 = [['id1', 'group1'], ['id1', 'group2'], ['id2', 'group1'], ['id2', 'group4']]
final_list=[]
for sublist in list1:
for item in sublist:
for sublist1 in list2:
for item1 in sublist1:
if item==item1:
final_list.append(("".join(sublist[:1]),item1,"".join(sublist1[1:])))
print(final_list)
输出:
[('user1', 'id1', 'group1'), ('user1', 'id1', 'group2'), ('user2', 'id2', 'group1'), ('user2', 'id2', 'group4')]