Как искать элементы в словаре, используя список строк?

У меня есть словарь с ключами и значениями под названием «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'

Мой словарь выглядит так Как искать элементы в словаре, используя список строк? Также мой list_to_find выглядит так. Как искать элементы в словаре, используя список строк?

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

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

Ваш код сбивает с толку. Каким должен быть результат?

RemcoGerlich 31.10.2018 11:00

Можете ли вы предоставить образец dictOfElements & listOfValues

Rakesh 31.10.2018 11:01

Непонятно, что вы пытаетесь сделать. Вы пытаетесь искать ключи или значения?

DeepSpace 31.10.2018 11:01

@Rakesh, я сохранил изображения того, как выглядит мой словарь и listofValues. Я хочу получить результат с совпадающими словами из list_to_find со словарем и его значением. Например, если мой list_to_find содержит «1st», «4th», результатом должен быть список совпадающих слов с ключами и значениями: «1st: first, 4th: 4th».

pari 31.10.2018 11:18

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

New2coding 31.10.2018 11:44
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
5
67
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Отсюда ошибка AttributeError: объект 'str' не имеет атрибута 'get'

Как мне получить результат в виде совпадающих слов из list_to_find со словарем и его значением? Например, если мой list_to_find содержит «1st», «4th», результатом должен быть список совпадающих слов с ключами и значениями: «1st: first, 4th: 4th»

pari 31.10.2018 11:19

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

Pratham 31.10.2018 11:23
Ответ принят как подходящий

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

Этот код ниже присваивает значения из вашего первого словаря (с именем 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'}

Другие вопросы по теме