使用元组作为字典键
问题描述:
我使用GraphViz
库,并且在某些情况下,它回退了一个以元组为键的字典。使用元组作为字典键
{(4, 7): 0, (2, 6): 1, (10, 4): 1, (5, 11): 1, (4, 5): 1,
(2, 8): 0, (8, 11): 0, (10, 0): 1, (6, 11): 1, (9, 11): 1,
(1, 9): 0, (10, 1): 0, (7, 11): 1, (0, 9): 1, (3, 7): 1,
(10, 3): 1, (10, 2): 1}
出于某种原因,我想获得在元组第二个数字: 第一号== 10 和 值== 1
我试着用(10,)
访问字典,但我认为这种语法是不允许在Python中。
答案应该是:[4 ,0 ,3 , 2]
答
你必须遍历字典,例如:
In [1]: d = {(4, 7): 0, (2, 6): 1, (10, 4): 1, (5, 11): 1, (4, 5): 1,
...: (2, 8): 0, (8, 11): 0, (10, 0): 1, (6, 11): 1, (9, 11): 1,
...: (1, 9): 0, (10, 1): 0, (7, 11): 1, (0, 9): 1, (3, 7): 1,
...: (10, 3): 1, (10, 2): 1}
In [2]: [b for (a, b), v in d.items() if a == 10 and v == 1]
Out[2]: [4, 0, 3, 2]
答
result=[]
for key in your_dict.keys():
if key[0]==10 and your_dict[key]==1:
result.append(key[1])
答
(10,)
是一个完全有效的语法,但是这将提高KeyError
这里。要获得所需的输出,您必须在此使用循环:
>>> d = {(4, 7): 0, (2, 6): 1, (10, 4): 1, (5, 11): 1, (4, 5): 1,
... (2, 8): 0, (8, 11): 0, (10, 0): 1, (6, 11): 1, (9, 11): 1,
... (1, 9): 0, (10, 1): 0, (7, 11): 1, (0, 9): 1, (3, 7): 1,
... (10, 3): 1, (10, 2): 1}
>>> [k[1] for k, v in d.items() if k[0] == 10 and v == 1]
[4, 0, 3, 2]
'1'不应该是结果的一部分,应该吗? – 2014-11-23 10:48:02
是的,谢谢:) – 2014-11-23 10:51:03