0

假设我像这样创建字典:

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:

但我认为可能有一种更优雅的方式来做到这一点。

谢谢!

4

2 回答 2

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
于 2012-08-27T08:24:59.793 回答
4

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

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

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

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

于 2012-08-27T08:27:48.813 回答