Как искать элементы в словаре, используя список строк? - PullRequest
0 голосов
/ 31 октября 2018

У меня есть словарь с ключами и значениями под названием «d». У меня есть еще один список строк, которые я должен найти значения из словаря под названием list_to_find. Вот мой код.

def getKeysByValues(dictOfElements, listOfValues):
  p = {}
  for match in dictOfElements:
   for ld in listOfValues:
     p.setdefault(match, []).append(ld.get(match, 0))
  return  p

ObtainedData = getKeysByValues(d,list_to_find) 

Я получаю ошибку: AttributeError: у объекта 'str' нет атрибута 'get'

Мой словарь выглядит так enter image description here Также мой list_to_find выглядит следующим образом. enter image description here

Мой ожидаемый результат будет содержать совпадающие слова с его значениями - ObtainedData: {'1st': 'first', '4th': 'четвертый' ....} Как мне решить это? пожалуйста помоги!! Я попытался реализовать, используя эту ссылку здесь

Однако я не могу получить результат и понять ошибку.

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

Из того, что вы написали в этом, не совсем ясно, что вы хотите сделать.

Этот код ниже присваивает значения из вашего первого словаря (с именем d) элементам списка, которые используются в качестве ключей в новом словаре. Все элементы списка должны содержаться в пределах d.

import numpy as np

d = {
'1st': ['first'],
'4th': ['fourth'],
'c': [np.nan],
'd': [np.nan],
'e': [np.nan],
'f': [np.nan],
'g': [np.nan]
}

l = ['1st', '4th']

new_d = {}

for i in l:
  new_d[i] = ''.join(d[i])

print(new_d)
#{'1st': 'first', '4th': 'fourth'}
0 голосов
/ 31 октября 2018

Ваш 'listOfValues' является списком, и при его итерации с использованием цикла for 'ld' уже содержит значение.
ld.get() вызывается для строки, то есть значений list_to_find.

Следовательно, ошибка AttributeError: у объекта 'str' нет атрибута 'get'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...