以我添加项的顺序迭代字典,python

2024-04-24 23:47:52 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我创建了这样一个字典:

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。用一个简单的

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

但我想可能有更优雅的方法。你知道吗

谢谢!你知道吗


Tags: 方法inself列表forif字典顺序
2条回答

对于第一个问题,使用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

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

对于第二种情况,假设您仍然关心顺序,您可以尝试(假设d是原始dict):

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

现在,在tmp_dict中有了您关心的值(tmp_dict.values()将显示它们)。你知道吗

相关问题 更多 >