Python 按值查找列表列表的键

Python 按值查找列表列表的键,python,list,Python,List,我是python新手,但我没能做到这一点 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'

我是python新手,但我没能做到这一点

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']]
我有两份清单:

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值不一定存在于第二个列表中


谢谢你的帮助

python中没有这样的东西。在
numpy
中有多维数组的方法,但它们并不真正适合文本

你的第二个列表就像一本字典,所以做一本吧

dict2 = {key:value for key, value in list2}
然后

new_list = [[a, b, dict2[b]] for a, b in list1]

python中没有这样的东西。在
numpy
中有多维数组的方法,但它们并不真正适合文本

你的第二个列表就像一本字典,所以做一本吧

dict2 = {key:value for key, value in list2}
然后

new_list = [[a, b, dict2[b]] for a, b in list1]

如果您必须使用列表列表,您可以使用理解来实现这一点

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']]

如果您必须使用列表列表,您可以使用理解来实现这一点

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']]

您可以尝试以下代码:

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')]

您可以尝试以下代码:

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')]

是否可以使用字典而不是列表?一个列表来自rest请求,另一个来自ldap搜索,我创建它们时会将每个子列表附加到主列表中。我想我可以做一本字典,但我不知道怎么做。列表没有“键”,所以没有这样的内置功能。如果要关联键值对,应该使用
dict
。是否可以使用字典而不是列表?一个列表来自rest请求,另一个来自ldap搜索,我正在创建它们,将每个子列表附加到主列表。我想我可以做一本字典,但我不知道怎么做。列表没有“键”,所以没有这样的内置功能。如果要关联键值对,应该使用
dict