如何使用字符串列表在字典中搜索项目?

时间:2018-10-31 09:53:49

标签: python-3.x list dictionary text-analysis

我有一本字典,其中包含称为“ 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':'fourth'....} 我该如何解决?请帮忙!! 我尝试使用此链接here

实施

但是,我无法获得结果并理解错误。

2 个答案:

答案 0 :(得分:1)

从您在此发布的内容中,您并不确定要做什么。

下面的代码将第一个词典(名为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'}

答案 1 :(得分:0)

您的'listOfValues'是一个列表,当使用for循环对其进行迭代时,'ld'已包含该值。
ld.get()被调用为字符串,即list_to_find的值。

出现错误 AttributeError:'str'对象没有属性'get'