如何在字典中使用键查找值

时间:2013-12-09 01:09:57

标签: python python-3.x dictionary tuples element

您好我正在尝试使用它们是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'

的值

3 个答案:

答案 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)]