2015-12-21 40 views
0

以下是每值陣列中的多個密鑰的示例字典:如何在for循環中訪問多個字典鍵?

test_dict = {('CA', 1): [1,2,3,4], ('MT', 45): [5,6,7,8]} 

我期望循環的鑰匙與itertools將產生的元組:

import itertools 

for key, value in test_dict.iteritems(): 
    print key 

然而,這產生了第一每個元組中的項目

MT 
CA 

如何在每次迭代中訪問元組,但仍可訪問值f或者例如:

('CA', 1) 
('MT', 45) 

我的最終目標是能夠在每次迭代內索引元組。例如,在這個例子中,我將索引元組和訪問的第二元組項目:

for key, value in test_dict.iteritems(): 
    print key[1] 


1 
45 
+1

您的代碼爲我工作。 '爲K,V在{( 'CA',1):[1,2,3,4],( 'MT',45):[5,6,7,8]}。iteritems():打印ķ ''打印( 'MT',45)( 'CA',1)' – Aya

+1

Python版本您使用的?你的第一個代碼示例在Python 2.7中打印出元組,並且我可以使用'key [0]'和'key [1]' – Jaco

回答

1

您可以使用list comprehension

lst = [k for k,v in test_dict.items()] 

輸出:

[('MT', 45), ('CA', 1)] 

要獲取的元素lst

for i in lst: 
     print (i) 

輸出:

('MT', 45) 
('CA', 1) 

...和獲取所述元組的第一個元素:

for i in lst: 
     print (i[0]) 

輸出:

MT 
CA 

...或元組的第二個元素:

for i in lst: 
    print (i[1]) 

輸出:

45 
1 
1

使用keys()方法來代替,這樣一來:

>>> test_dict = {('CA', 1): [1,2,3,4], ('MT', 45): [5,6,7,8]} 
>>> 
>>> test_dict.keys() 
[('MT', 45), ('CA', 1)] 
>>> for k in test_dict.keys(): 
    print k 

('MT', 45) 
('CA', 1) 

甚至乾脆:

>>> for k in test_dict: 
    print k 


('MT', 45) 
('CA', 1)