Python 如何在列表数组中循环,检查每个列表中的元素并与值进行比较,如果它与值匹配,则返回键

Python 如何在列表数组中循环,检查每个列表中的元素并与值进行比较,如果它与值匹配,则返回键,python,arrays,list,csv,dictionary,Python,Arrays,List,Csv,Dictionary,我有一个包含数百个数组的数组,我试图在每个数组中循环并测试每个数组中的一个元素,看看它是否存在于字典中。如果是,则返回与值匹配的键。这就是我被困的地方。这就是我想要实现的目标 dictionary = {'Bob' : '1', 'John' : '2', 'Andy': '3'} list = [['5','2019','$50'],['1','2019','$50'],['5','2018','$50'] with open('C:/...','w',newline='') as f:

我有一个包含数百个数组的数组,我试图在每个数组中循环并测试每个数组中的一个元素,看看它是否存在于字典中。如果是,则返回与值匹配的键。这就是我被困的地方。这就是我想要实现的目标

dictionary = {'Bob' : '1', 'John' : '2', 'Andy': '3'}
list = [['5','2019','$50'],['1','2019','$50'],['5','2018','$50']

with open('C:/...','w',newline='') as f:
    fieldName = ['ID','Name','Price']
    writer = csv.DictWriter(f, fieldnames=fieldName)
    writer.writeheader()
    for i in list:
        if i[0] in dictionary.values():
            writer.writerow({'ID' : i[0], 'Name' : *DictionaryKey*, 'Price' : i[2]})

从值中搜索关键字是错误的用法:它应该是相反的。另外,可能有多个键对应于该值

您的代码应该在此tmeplate上:

dictionary = {'1': 'Bob', '2': 'John', '3': 'Andy'}
my_list = [['5','2019','$50'],['1','2019','$50'],['5','2018','$50'] # do not use 'list' as variable name

with open('C:/...','w+',newline='') as f:
    fieldNames = ['ID','Name','Price']  
    writer = csv.DictWriter(f, fieldnames=fieldNames)
    writer.writeheader()

    for id_, year, price in my_list:
        if id_ in dictionary.values():
            writer.writerow({'ID' : id_, 'Name' : dictionary[id_], 'Price' : price})

以下是我问题的答案:

dictionary = {'1' : 'Bob', '2' : 'John', '2': 'Andy'}
my_list = [['5','2019','$50'],['1','2019','$50'],['5','2018','$50']]

with open('C:/...','w',newline='') as f:
fieldName = ['ID','Name','Price']
writer = csv.DictWriter(f, fieldnames=fieldName)
writer.writeheader()
for i in list:
  for key, value in dictionary:
      if i[0] == key:
           writer.writerow({'ID' : i[0], 'Name' : key, 'Price': i[2]})

你当前的代码有什么问题?你不应该使用<代码>列表<代码>作为变量的名称,因为它是Python中的保留关键字,考虑使用<代码> 'W+'/Cube >作为打开文件的模式,如果文件不存在,它将负责创建文件。通过每个循环检查每个列表中的第一个元素,如果它在字典值中,则返回键。因此,第二个循环的输出应该是ID:1 Name:BobI,如果可能的话,将重新构造您的dict,以便ID
(1,2,3…
是键。