在字典中查找值并返回key-python

在字典中查找值并返回key-python,python,python-2.7,dictionary,Python,Python 2.7,Dictionary,在我的pandas数据帧列中,我需要检查该列是否包含字典值中的任何单词,然后我应该返回键 my_dict = {'woodhill': ["woodhill"],'woodcocks': ["woodcocks"], 'whangateau' : ["whangateau","whangate"],'whangaripo' : ["whangaripo","whangari","whangar"], 'westmere' : ["westmere"],'western

在我的pandas数据帧列中,我需要检查该列是否包含字典值中的任何单词,然后我应该返回键

my_dict = {'woodhill': ["woodhill"],'woodcocks': ["woodcocks"], 'whangateau' : ["whangateau","whangate"],'whangaripo' : ["whangaripo","whangari","whangar"],
              'westmere' : ["westmere"],'western springs': ["western springs","western springs","western spring","western sprin",
"western spri","western spr","western sp","western s"]}

我可以为此编写一个for循环,但是,我的数据帧中有近150万条记录,字典中有100多个项,在某些情况下,每个项最多可以有20个值。我如何有效地做到这一点?我可以在字典中创建反向值作为键和键作为值以使其快速吗?谢谢。

先把字典上的项目倒过来。#因为物品有限,所以速度很快

第二,从字典创建数据帧与使用dataframe搜索每个比较的所有键不同,最好使用join。因此,要创建数据帧


第三,从大数据框向左连接到小数据框(在本例中为字典)。

您可以反转字典

reversed_dict = {val: key for key in my_dict for val in my_dict[key]}
然后使用数据帧进行映射

df =pd.DataFrame({'col1':['western springs','westerns','whangateau','whangate']})
df['col1'] = df['col1'].map(reversed_dict)

请尝试此代码,这可能会对您有所帮助。

我无法在此进行联接,因为我的数据框列不完全是字典值。列值将类似于“西春路西春”、“国王路西春”、“测试值”。哦。。然后在第一次操作之后,使用带有“IN”操作的映射到数据帧。别忘了使用.iloc!!在执行“IN”操作时,再次执行“ANY”以提高性能!!。嗨,吉莎。谢谢你的回复。然而,我的数据帧不会是这样的。它将类似于-df=pd.DataFrame({col1:['westernsprings','westernss']})。对不起,我没有提到这一点。如果字典值匹配,是否要用字典键替换列值!尝试反转dict,然后进行映射