我是Python的新手,我有一个问题,我需要从字典中获取键,其中键是元组。例如:
ones = {(1,2,6,10):3, (4,5,9):4, (3,7,8):5}
我知道每个数字都出现在键中,我想访问键中数字为2的值(值为3)。
我可以获得有关如何访问此值的任何帮助吗?
答案 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