0

我正在尝试遍历字典 [1:] 中的所有内容,但不知道该怎么做,也找不到答案。

for value in self.legLocs.itervalues():
            print x

我认为它会像

for value in self.legLocs.itervalues()[1:]:
            print x

但这不起作用。这样做的正确方法是什么?

4

4 回答 4

2

字典没有顺序,所以除了第一个之外,你不能真正遍历所有字典(因为没有真正定义哪个元素是第一个)。您可以遍历 dict 并排除特定键:

def dict_keys_without(d,excludes_set):
    return (k for k in d if k not in excludes_set)

然后您可以使用:

for key in dict_keys_without(d,{'foo','bar'}):
    #do something with `k` or `d[k]`, etc.

您可以轻松修改上述函数以使用d.iteritems()d.itervalues()任何您想要的标准。

当然,总是有“使用 a collections.OrderedDict”的建议,它是一个 dict 子类,它知道它的顺序。如果您使用的是OrderedDict,那么您可以执行以下操作:

values = iter(od.values())
_ = next(values,None)  #scrap the first one
for value in values:
    pass #Do something with the next values.
于 2013-04-08T15:45:55.370 回答
1

正如@mgilson 所提到的,[1:]真的没有任何意义dict......如果你很高兴只是忽略一些任意条目,那么你可以使用类似的东西:

def skipone(d):
    i = d()
    next(i, None)
    return i

d = {1:2, 3:4, 5:6}
for blah in skipone(d.iteritems): # or other function
    pass

或者:

from itertools import islice
def skip(obj, n=1):
    i = obj() if callable(obj) else obj
    return islice(i, n, None)
于 2013-04-08T15:51:53.600 回答
0

如果你想遍历所有项目:

for k,v in self.legLocs.items():
    print "key",k
    print "value",v

或像这样:

for kv in self.legLocs.items():
    k, v = kv
    print "key",k
    print "value",v

如果您只想对键进行迭代:

for k in self.legLocs.keys():
    print "key",k

如果您只想迭代

for v in self.legLocs.values():
    print "value",v
于 2013-04-08T15:47:42.433 回答
0

通过字典“迭代”,这样做:

for key in aDict.keys():
    if key != 'excluded':  # You can check to see if it is the one you want to leave off
        print(aDict[key])
于 2013-04-08T15:54:10.930 回答