当键是元组时访问字典值

时间:2016-12-10 12:25:35

标签: python dictionary

我是Python的新手,我有一个问题,我需要从字典中获取键,其中键是元组。例如:

ones = {(1,2,6,10):3, (4,5,9):4, (3,7,8):5}

我知道每个数字都出现在键中,我想访问键中数字为2的值(值为3)。

我可以获得有关如何访问此值的任何帮助吗?

4 个答案:

答案 0 :(得分:1)

您可以使用以下理解来“压扁”字典:

ones = {(1,2,6,10):3, (4,5,9):4, (3,7,8):5}

flat = {element: value for key, value in ones.items() for element in key}

现在,您可以通过flat从元组中获取任意键的值。

答案 1 :(得分:1)

您可以迭代 并检查密钥中是否存在2

In [24]: ones = {(1,2,6,10):3, (4,5,9):4, (3,7,8):5}

In [25]: for k, v in ones.iteritems():
   ....:     if 2 in k:
   ....:         print v
   ....:         
3

答案 2 :(得分:0)

在查找密钥的一个子元素时,无法使用普通字典访问。你必须循环:

value_for_2 = next(ones[key] for key in ones if 2 in key)

会找到第一个匹配(其中'first'是任意的,因为字典不是有序的。)

如果您的元组元素确实是唯一的,您需要进行多次查找,然后首先转换字典以使用元组元素作为键:

converted = {t_elem: value for key in ones for t_elem in key}

不要担心这里的价值重复。值不需要是唯一的,您所做的只是存储引用;以上内容不会创建值的副本。

现在您可以再次使用快速键查找:

value_for_2 = converted[2]

答案 3 :(得分:0)

ones = {(1,2,6,10):3, (4,5,9):4, (3,7,8):5}
for key, value in ones.items():
    if 2 in key:
        print(value)

出:

3