簡體   English   中英

使用元組作為字典鍵

[英]Work with tuples as dictionary keys

我使用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, )訪問字典(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]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM