辞書 [1:] のすべてをループしようとしていますが、その方法がわからず、答えが見つかりません。
for value in self.legLocs.itervalues():
print x
そして、私はそれが次のようなものになると思います
for value in self.legLocs.itervalues()[1:]:
print x
しかし、それはうまくいきません。これを行う正しい方法は何ですか?
辞書 [1:] のすべてをループしようとしていますが、その方法がわからず、答えが見つかりません。
for value in self.legLocs.itervalues():
print x
そして、私はそれが次のようなものになると思います
for value in self.legLocs.itervalues()[1:]:
print x
しかし、それはうまくいきません。これを行う正しい方法は何ですか?
辞書には順序がないため、最初の要素を除いてすべてを実際にループすることはできません (最初の要素が実際には定義されていないため)。ただし、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
それが順序であることを知っている辞書サブクラスである「使用する」アドバイスが常にあります。を使用している場合はOrderedDict
、次のようにすることができます。
values = iter(od.values())
_ = next(values,None) #scrap the first one
for value in values:
pass #Do something with the next values.
@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)
すべてのアイテムを反復処理する場合:
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