您好我正在尝试使用它们是2元素元组的键来查找字典中的值。
例如,任何基本字典都如下所示:
dict = {'dd':1, 'qq':2, 'rr':3}
因此,如果我想找到'dd'的值,我会这样做:
>>>dict['dd']
1
但是如果我有一个字典的键是2元素元组怎么办:
dict = {('dd', 'ee'):1, ('qq', 'bb'):2, ('rr', 'nn'):3}
然后我怎样才能找到'dd'或'rr'
的值答案 0 :(得分:3)
您没有正确使用字典。字典中的键应该是您想要查找它们的形式。因此,除非您通过元组('dd', 'ee')
查找值,否则应将这些键分开。
如果您被迫从该dict结构开始,那么您可以使用此转换为所需的dict:
d1 = {('dd', 'ee'):1, ('qq', 'bb'):2, ('rr', 'nn'):3}
# creates {'dd': 1, 'ee': 1, 'qq': 2, 'bb': 2, 'rr': 3, 'nn': 3}
d2 = {x:v for k, v in d1.items() for x in k}
答案 1 :(得分:1)
您需要恢复为线性搜索
>>> D = {('dd', 'ee'):1, ('qq', 'bb'):2, ('rr', 'nn'):3}
>>> next(D[k] for k in D if 'dd' in k)
1
如果您需要进行多次查找,那么建立一个助手词典是值得的,因为@bcorso建议
话说过。对于您要解决的任何问题,dict
可能是错误的数据结构
答案 2 :(得分:0)
使用列表理解:
>>> d={('dd', 'ee'):1, ('qq', 'bb'):2, ('rr', 'nn'):3, ('kk','rr'):4}
>>> [(t,d[t]) for t in d if 'rr' in t]
[(('kk', 'rr'), 4), (('rr', 'nn'), 3)]