Как перебрать массив списков, проверить элемент в каждом списке и сравнить со значением, и если оно совпадает со значением, вернуть ключ - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть массив, содержащий сотни массивов, я пытаюсь перебрать каждый массив и проверить элемент в каждом массиве, чтобы увидеть, существует ли он в словаре.Если это так, верните ключ, соответствующий значению.Вот где я застрял.Вот что я пытаюсь достичь.

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

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

Вот решение моего вопроса:

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]})
0 голосов
/ 04 февраля 2019

Вы неправильно используете свой словарь, ища ключ по значению: он должен быть противоположным.Кроме того, этому значению может соответствовать несколько ключей.

Ваш код должен быть на этой табличке:

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})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...