在列出的python-dict中访问键和val

时间:2014-02-06 16:52:41

标签: python list dictionary

我有一个带有第0个元素的列表k:

k[0]: {'pattern': 0, 'pos': array([   9.83698,  106.539  ,  130.314  ]), 'id': 1922}

(它看起来像一个字典,但确实是一个列表) 当我遍历列表k的第0个元素并打印出我得到的每个元素时:

for i in k:
    print i

=>输出:

pattern
pos
id

我不仅要访问键,还要访问值。这该怎么做? 我也尝试使用zip和izip将列表转换回dict,但是同样的resutlts ...即。只打印键,没有值... 任何帮助将不胜感激

事先提前

2 个答案:

答案 0 :(得分:0)

您可以使用k.values()来遍历值,或者使用k.items()来迭代(键,值)对

for value in k.values():
     print value

for key, value in k.items():
     print key, value

答案 1 :(得分:0)

迭代你创建的字典(实际上是字典)的最快方法是,使用k[0].keys()创建键/值列表,k[0].valuesk[0].items()但使用k[0].iteritems()创建一个字典迭代器,它只返回对而不在内存中分配列表。

对于大字典(a是字典),它的运行速度也快得多:

>>> non_iter_timer = timeit.Timer("for k,v in a.items(): k + v", setup="a = {x:x for x in xrange(10000000)}")
>>> non_iter_timer.repeat(3, 10)
[25.612606023166585, 25.100741935717622, 24.840450306339463]

>>> iter_timer = timeit.Timer("for k,v in a.iteritems(): k + v", setup="a = {x:x for x in xrange(10000000)}")
>>> iter_timer.repeat(3, 10)
[9.26259596885518, 9.198298194571748, 9.77466250122282]