在python词典中搜索列表中的值

How*_*ang 2 python dictionary

我希望能够获得给出昵称的人的名字(所有昵称都是唯一的).一个人可以有多个昵称.我正在考虑使用如下字典

nicknames = {
    'lebron james': ['king james', 'lbj'],
    'dwayne johnson': ['rocky', 'the rock', 'brahma bull']
}
Run Code Online (Sandbox Code Playgroud)

所以例如,给定一个字符串'rocky',我希望能够返回'dwayne johnson'.这种数据结构是存储名称=>昵称配对的最佳方式吗?或者是否有更好的方法来存储数据以提高搜索效率?

tim*_*geb 5

你的字典是错误的方式.如果昵称是唯一的,请将它们用作键.

>>> nicknames = {
...:    'lebron james': ['king james', 'lbj'],
...:    'dwayne johnson': ['rocky', 'the rock', 'brahma bull']
...:}
>>> 
>>> nicknames = {nick:real for real, lst in nicknames.items() for nick in lst}
>>> nicknames
{'brahma bull': 'dwayne johnson',
 'king james': 'lebron james',
 'lbj': 'lebron james',
 'rocky': 'dwayne johnson',
 'the rock': 'dwayne johnson'}
>>> 
>>> nicknames['rocky']
'dwayne johnson'
Run Code Online (Sandbox Code Playgroud)