-2

辞書内のすべての要素を 1 つずつ読み取ろうとしています。私の辞書は以下の「テスト」です。

test ={'line4': (4, 2), 'line3': (3, 2), 'line2': (2, 2), 'line1': (1, 2), 'line10': (10, 2)}

以下のサンプルコードのようにしたいです。

for i in range(1,len(test)+1):
    print test(1) # should print all the values one by one

ありがとうございました

4

4 に答える 4

3

ここにいくつかの可能性があります。あなたの質問は非常に漠然としていて、コードはほとんど機能していないため、質問を理解するのは困難です

>>> test ={'line4': (4, 2), 'line3': (3, 2), 'line2': (2, 2), 'line1': (1, 2), 'line10': (10, 2)}
>>> for i in test.items():
...     print i
... 
('line4', (4, 2))
('line3', (3, 2))
('line2', (2, 2))
('line1', (1, 2))
('line10', (10, 2))
>>> for i in test:
...     print i
... 
line4
line3
line2
line1
line10
>>> for i in test.values():
...     print i
... 
(4, 2)
(3, 2)
(2, 2)
(1, 2)
(10, 2)
>>> for i in test.values():
...     for j in i:
...         print j
... 
4
2
3
2
2
2
1
2
10
2
于 2013-03-28T05:32:15.077 に答える
3
#Given a dictionary
>>> test ={'line4': (4, 2), 'line3': (3, 2), 'line2': (2, 2), 'line1': (1, 2), 'line10': (10, 2)}

#And if you want a list of tuples, what you need actually is the values of the dictionary
>>> test.values()
[(4, 2), (3, 2), (2, 2), (1, 2), (10, 2)]

#Instead if you want a flat list of values, you can flatten using chain/chain.from_iterable
>>> list(chain(*test.values()))
[4, 2, 3, 2, 2, 2, 1, 2, 10, 2]
#And to print the list 
>>> for v in chain.from_iterable(test.values()):
    print v


4
2
3
2
2
2
1
2
10
2

コードの分析

for i in range(1,len(test)+1):
    print test(1) # should print all the values one by one
  1. 辞書に索引を付けることはできません。辞書はリストのようなシーケンスではありません
  2. インデックスに括弧を使用しないでください。関数呼び出しになります
  3. ディクショナリを反復するには、キーまたは値を反復できます。
    1. for key in testキーで辞書を反復する
    2. for key in test.values()値で辞書を反復する
于 2013-03-28T05:15:29.943 に答える
2

これを試して:

for v in test.values():
    for val in v:
        print val

リストが必要な場合:

print [val for v in test.values() for val in v ]

dict から各レコードを印刷する場合は、次のようにします。

for k, v in test.iteritems():
    print k, v
于 2013-03-28T05:14:57.140 に答える
1

ネストされた内包表記を使用できます。

>>> test ={'line4': (4, 2), 'line3': (3, 2), 'line2': (2, 2), 'line1': (1, 2), 'line10': (10, 2)}
>>> print '\n'.join(str(e) for t in test.values() for e in t)
4
2
3
2
2
2
1
2
10
2

Python では辞書はソートされていないため、タプルもソートされません。

于 2013-03-28T05:20:23.103 に答える