按顺序迭代字典我添加了项目,python

时间:2012-08-27 08:22:55

标签: python dictionary iteration

说我像这样创建一个字典:

self.defaultValues = {}
self.defaultValues["A"] = "10"
self.defaultValues["B"] = "100"
self.defaultValues["C"] = "20"
self.defaultValues["D"] = "12.5"

我希望能够按照添加它们的相同顺序迭代项目,这意味着

for k in self.defaultValues:
     print k

会导致

A
B
C
D

另外,如果我有另一个列表,不一定长度相同。我想迭代字典和列表,如果列表中存在值,我将打印它,否则我将打印,如果形成字典。它很容易用简单的

if self.list.count(value) != 0:

但我认为可能有一种更优雅的方式。

谢谢!

2 个答案:

答案 0 :(得分:5)

对于第一个问题,请使用OrderedDict

from collections import OrderedDict
d = OrderedDict()
d["A"] = "10"
d["B"] = "100"
d["C"] = "20"
d["D"] = "12.5"
for k in d:
    print k

OrderedDict尊重插入元素的顺序。

对于您的第二个问题(您应该针对不同的问题提出单独的问题),您可以使用in来测试对象是否在列表中:

l = [1,2,3,4]
print 1 in l # prints True
print 5 in l # prints False

答案 1 :(得分:4)

对于问题的第一部分,请使用collections.OrderedDict

对于第二个,假设您仍然关心订单,您可以尝试(并假设d是原始字典):

tmp_dict = OrderedDict((x, x) for x in l)
tmp_dict.update(d)

您现在在tmp_dict中拥有您关注的值(tmp_dict.values()将显示它们)。