2

この dict のキーを 2 つの個別のリストに分割するにはどうすればよいですか?

score = {(13.5, 12.0): 10.5, (10.7, 19.3): 11.4, (12.4, 11.1): 5.3}

list1 = []
list2 = []

印刷時にこれらのリストを取得できるようにするには?

list1 = [13.5, 10.7, 12.4]
list2 = [12.0, 19.3, 11.1]

私はこれを試しましたが、うまくいきません

for (a, b), x in score:
    list1.append(a,)
    list2.append(b,)
4

4 に答える 4

5

あなたのコードはほぼ正しい, xです。

ディクショナリを反復処理すると、キーと値ではなく、キーが反復処理されます。ここではキーのみが必要なので、ディクショナリを反復処理しても問題ありません。

score.items()または、代わりに (またはscore.iteritems()Python 2 でのみ)繰り返し処理することもできます。

于 2012-04-14T06:29:59.200 に答える
1

辞書のキーを反復処理していますが、に割り当ててい(key, value)ます。キーと値のペアを反復するには、itemsまたはを使用できiteritemsます。

for (a, b), x in score.iteritems():

この特定のケースでは、明示的なループの代わりにリスト内包表記を使用できます。

list1 = [a for a, b in score]
list2 = [b for a, b in score]
于 2012-04-14T06:30:10.610 に答える
1

または、zip と splat (解凍) を組み合わせて使用​​することもできます。

>>> score = {(13.5, 12.0): 10.5, (10.7, 19.3): 11.4, (12.4, 11.1): 5.3}
>>> x, y = zip(*score.keys())
>>> x
(10.7, 12.4, 13.5)
>>> y
(19.3, 11.1, 12.0)
于 2012-04-14T06:31:41.843 に答える
0

キーを適切にループする必要があります

for (a, b) in score.keys():
    list1.append(a)
    list2.append(b)
于 2012-04-14T06:30:56.163 に答える