IterItems只查看第一个值

时间:2014-04-12 12:03:21

标签: python dictionary

我在python中有一个简单的字典,我想迭代所有项目来打印密钥和值:

 myDictionary = {"0" :0, "1":0, "2":0, "3":0, "4":0, "5":0, "6":12, "7":0,"8":0,"9":0,"10":0,"11":0, "12":0,"13":12}


 def count(self, myDictionary):
     for k, v in myDictionary.items():
         print k,v 

Python将myDictionary视为:

 {'11': 0, '10': 0, '13': 12, '12': 0, '1': 0, '0': 0, '3': 0, '2': 0, '5': 0, '4': 0, '7': 0, '6': 12, '9': 0, '8': 0}

虽然打印出键和值,但只打印11 0。我也试过iteritems()。为什么只打印字典中的第一个元素?我有python 2.3,如果这有所作为。

1 个答案:

答案 0 :(得分:0)

我假设(根据评论)这段代码不属于字典类,而是一个方法,所以我删除了self(用于调用其他变量或方法)该类本身)并看到以下代码返回了您想要的结果(运行python 2.7.3):

>>>def count(myDictionary):
        for k,v in myDictionary.items():
            print k,v
>>>count(myDictionary)
11 0
10 0
13 12
12 0
1 0
0 0
3 0
2 0
5 0
4 0
7 0
6 12
9 0
8 0
>>> 

当您使用一个字典(self)调用方法时,这支持更新为2.7x并删除myDictionary的需要,否则它将需要两个参数。

如果您需要将数据存储在可以实现的类结构中,但我只建议您使用比您发布的数据结构更复杂的数据结构,例如每个键具有多个属性的键控字典我想分开打电话。如:

dictionary = {v1: 0, 8, 9, v2: 9,6,3}

其中v1v2表示您想要单独调用x,y和z方向的3D矢量,而不必遍历所有数据。