【问题标题】:How to access multiple dictionary keys within for loop?如何在for循环中访问多个字典键?
【发布时间】:2016-03-27 13:32:28
【问题描述】:

以下是每个值数组有多个键的示例字典:

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

如何在每次迭代中访问元组但仍然可以访问值,例如:

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

我的最终目标是能够在每次迭代中索引元组。例如在这个例子中,我将索引元组并访问第二个元组项:

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


1
45

【问题讨论】:

  • 您的代码对我有用。 for k, v in {('CA', 1): [1,2,3,4], ('MT', 45): [5,6,7,8]}.iteritems(): print k 打印 ('MT', 45) ('CA', 1)
  • 您使用的是什么版本的 Python?您的第一个代码示例在 Python 2.7 中打印出元组,我可以使用 key[0]key[1] 索引元组

标签: python dictionary key tuples itertools


【解决方案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

【讨论】:

    【解决方案2】:

    改用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)
    

    【讨论】:

      猜你喜欢
      • 2015-12-23
      • 2015-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-22
      • 1970-01-01
      • 1970-01-01
      • 2021-01-26
      相关资源
      最近更新 更多