Python - 在字典中循环使用特定变量

时间:2013-04-08 15:45:19

标签: python

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

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

我认为它会像

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

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

4 个答案:

答案 0 :(得分: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()或您想要的任何条件。

当然,总是存在“使用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.

答案 1 :(得分: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)

答案 2 :(得分: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

答案 3 :(得分: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])