web-dev-qa-db-ja.com

キーと値を反復する辞書の列挙

領域名(regionspointcount)をキーとして保持し、その領域内の機能の種類のカウント(str)を値として保持するintという辞書があります。 {'Highland':21}

列挙中に辞書のキーと値を繰り返したいです。次のようなことを行う方法はありますか?

for i, k, v in enumerate(regionspointcount.items()):

または、カウント変数を使用する必要がありますか?

10
Worm

辞書dが与えられた場合:

d
# {'A': 1, 'B': 2, 'C': 3, 'D': 4}

タプルを使用して、forループヘッダーのキーと値のペアをアンパックできます。

for i, (k, v) in enumerate(d.items()):
     print(i, k, v)

# 0 A 1
# 1 B 2
# 2 C 3
# 3 D 4

余分な括弧が必要な理由を理解するには、enumerateからの生の出力を見てください。

list(enumerate(d.items()))
# [(0, ('A', 1)), (1, ('B', 2)), (2, ('C', 3)), (3, ('D', 4))]

キーと値のペアはタプル内にパッケージ化されるため、同じ方法で展開する必要があります。

18
cs95

キーと値のペアを列挙したいだけで(インデックスiは不要)、iter()を使用できます。

d={'A': 1, 'B': 2, 'C': 3, 'D': 4}
for k,v in iter(d.items()):
    print(k,v)

これは次のようなものを印刷します

A 1
C 3
B 2
D 4

エントリは必ずしも順序付けられていないことに注意してください。

4
Adrian W