Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将1D列表的第一个元素与2D列表进行比较,如果找到,则添加第二个元素_Python - Fatal编程技术网

Python 将1D列表的第一个元素与2D列表进行比较,如果找到,则添加第二个元素

Python 将1D列表的第一个元素与2D列表进行比较,如果找到,则添加第二个元素,python,Python,此格式有两个列表-一个1D列表和一个2D列表: a=['1','2','3','4'] b=[['1','a'],['1','z'],['2','c'],['4','r'],['4','d']] 预期产出: [['1':'a','z'],['2':'c'],['3':'not found'],['4':'r','d']] 逻辑是我们需要获取列表“a”的每个元素,并将其与列表“b”的第一个元素进行比较。如果找到了,那么添加它(它可以出现多次,添加所有)。如果未找到,请在其前面添加“未找到” 我

此格式有两个列表-一个1D列表和一个2D列表:

a=['1','2','3','4']
b=[['1','a'],['1','z'],['2','c'],['4','r'],['4','d']]
预期产出:

[['1':'a','z'],['2':'c'],['3':'not found'],['4':'r','d']]
逻辑是我们需要获取列表“a”的每个元素,并将其与列表“b”的第一个元素进行比较。如果找到了,那么添加它(它可以出现多次,添加所有)。如果未找到,请在其前面添加“未找到”

我的尝试:

x=[]
for i in range(len(a)):
        for j in range(len(b)):
                if (a[i]==b[j][0]):
                        x.append([a[i],b[j][1]])


  result=OrderedDict()

for k,v in x:
        if k in result.keys():
                result[k].append(v)
        else:
                result[k]=[v]
result=["{}\t{}\r\n".format(k, ",".join(v)) for k,v in result.items()]
我的代码的问题是,如果没有匹配的大小写,它不会打印“未找到”。
如果您有其他更好的选择,而不是多次循环,请建议。

尝试为b的元素制作一个字典

from collections import defaultdict
b_dict = defaultdict(list)

for i in b:
    b_dict[i[0]].append(i[1])

result = []
for a_i in a:
    temp = [a_i]
    if(b_dict[a_i]):
        temp.extend(b_dict[a_i])
    else:
        temp.append('not found')
    result.append(temp)
这将给出输出

[['1', 'a', 'z'], ['2', 'c'], ['3', 'not found'], ['4', 'r', 'd']]

小问题:您的“expected out”语法无效,并且肯定不代表字典列表。。请修理。@barny,对不起。我已经添加了几行,所以预期的输出现在就可以了。错误否,这是无效的:建议您实际尝试该语法,而不是编造该语法,看看Python是否接受它。让我们具体一点,“预期的输出”不是字典列表的有效代表,它对任何东西都不是有效的Python语法。