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')