【问题标题】:Python search for string values within dictionary and return key and value if foundPython 在字典中搜索字符串值,如果找到则返回键和值
【发布时间】:2021-06-28 22:07:05
【问题描述】:

我已经重新开始并编辑了我的问题,以便更清楚。我知道我只是稍微遗漏了一些东西,但只需要一些指导来完成解决方案,因为我无法找到一个帖子来回答这个问题。

我想搜索字典值是否存在多个字符串,如果存在则打印键和值。

这是一个示例字典,如果print(d)

{0: array(['flag','weather','brown','bag'],dtype=object), 1: array(['wave','frown','happy','flag'],dtype=object)}

我想搜索这些字符串 -

match = ['flag','frown']

所以我为单个搜索值找到了类似的东西

def matchingKeys(dictionary, searchString):
    return [key for key,val in dictionary.items() if any(searchString in s for s in val)]
matchingKeys(d,'frown')

然后输出在哪里 [1] 但我想搜索多个这样的字符串,但输出不太好。

{key:s for s in match for key,val in d.items() if any(s in val for s in match)}

虽然frown 只存在于[1] 中,但当前输出在这里

{0 : 'frown',1:'frown'}

如果找到匹配项,这会引入键的每个值,而不仅仅是匹配项

{key:val for key,val in d.items() if any(s in val for s in match)}

我想要的实际输出是 -

{0:'flag',1:'flag','frown'}

【问题讨论】:

  • 在第一个示例中,您究竟使用什么来显示字典?这不是dicts 通常的样子。
  • 请给minimal reproducible example。您显示的“字典”不是有效的语法,也不是最小的。你会展示一个使用有效语法的小示例字典吗?
  • 我也不知道你在“col1 值内……col 是数据框列”是什么意思。如果您实际上有一个 DataFrame,那么 a) 您应该明确说明您正在使用 Pandas 并标记 [pandas]; b) 那不是字典,所以我这里没有清楚地描述问题。
  • type(d[0]) 返回 pandas.core.frametype(d) 返回 dict 所以这是一个独特的案例
  • 请显示:精确示例输入; 想要的结果;您之前实际尝试过的 exact 代码(简化为与问题相关的部分);以及究竟发生了什么当您尝试该代码时(以及它与您想要的有何不同)。

标签: python pandas string dictionary


【解决方案1】:

我已经成功解决了

dict((key, [x for x in value if x in match]) for key,value in d.items())

【讨论】:

    猜你喜欢
    • 2016-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    • 2017-12-20
    • 1970-01-01
    • 1970-01-01
    • 2012-03-05
    相关资源
    最近更新 更多