Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否可以查看字典的值是否包含字符串的X?_Python_Dictionary - Fatal编程技术网

Python 是否可以查看字典的值是否包含字符串的X?

Python 是否可以查看字典的值是否包含字符串的X?,python,dictionary,Python,Dictionary,如果我有这样一本字典: dictionaryName = {'Key1':'Akins, Richard A. ', 'Key2':'Frederic, Matthew B. ', 'Key3':'Freeman, Gordon J. '} 是否可以编写一些可以接受输入的内容,例如Richard A.或Richard并返回Key1?是的,如果要搜索的文本是其中一个值的精确子字符串,则可以在中使用: def search_dict(d, needle): return [k for

如果我有这样一本字典:

 dictionaryName = {'Key1':'Akins, Richard A. ', 'Key2':'Frederic, Matthew B. ', 'Key3':'Freeman, Gordon J. '}


是否可以编写一些可以接受输入的内容,例如
Richard A.
Richard
并返回
Key1

是的,如果要搜索的文本是其中一个值的精确子字符串,则可以在
中使用

def search_dict(d, needle):
    return [k for k, v in d.items() if needle in v]

d = {'Key1':'Akins, Richard A. ', 'Key2':'Frederic, Matthew B. ', 'Key3':'Freeman, Gordon J. '}
print(search_dict(d, "Richard"))
如果只需要返回第一个键,则可以执行以下操作:

def search_dict(d, needle):
    for k, v in d.items():
        if needle in v:
            return k

是的,您可以使用adict.items()


您基本上是在寻找模糊查找,但dict键似乎应该是值,反之亦然。也不要使用
dict
作为变量名。试着这样做:

next(k for k, v in data.items() if 'Richard' in v)

示例Python 3.6

example_dict = {'Key1':'Akins, Richard A. ', 'Key2':'Frederic, Matthew B. ', 'Key3':'Freeman, Gordon J. '}

def get_key(d, value):
  for k,v in d.items():
    if value in v:
      print(f'Key: {k}')
      return v

get_key(example_dict, 'Richard A')

如果文本不完全匹配怎么办?如果他们正在查找
Key1
并输入“Richard”``是否有方法返回
Key1
我编辑了答案以澄清-这对任何子字符串都很有效,因此“Richard”将与“Akins,Richard a.”匹配。如果您需要允许不同拼写等的模糊匹配,则会更困难。谢谢!,我不认为我需要模糊匹配,我希望弄清楚是否有可能让用户即使忘记包含空格或大写字母,也能收到结果,而这似乎正是如此。如果没有库的话,我就无法回过头来思考。如果希望大写不重要(不区分大小写的匹配),请在v.lower()中使用
needle.lower()
example_dict = {'Key1':'Akins, Richard A. ', 'Key2':'Frederic, Matthew B. ', 'Key3':'Freeman, Gordon J. '}

def get_key(d, value):
  for k,v in d.items():
    if value in v:
      print(f'Key: {k}')
      return v

get_key(example_dict, 'Richard A')