web-dev-qa-db-ja.com

Python辞書をタプルのリストに変換するにはどうすればよいですか?

次のような辞書がある場合:

{ 'a': 1, 'b': 2, 'c': 3 }

どうすればこれに変換できますか?

[ ('a', 1), ('b', 2), ('c', 3) ]

そして、どうすればこれに変換できますか?

[ (1, 'a'), (2, 'b'), (3, 'c') ]
186
mike
>>> d = { 'a': 1, 'b': 2, 'c': 3 }
>>> d.items()
[('a', 1), ('c', 3), ('b', 2)]
>>> [(v, k) for k, v in d.iteritems()]
[(1, 'a'), (3, 'c'), (2, 'b')]

それはあなたが望む順番ではありませんが、とにかく辞書には特定の順番はありません。1 必要に応じてソートまたは整理します。

参照: items()iteritems()


Python 3.xでは、iteritems(現在は存在しません)は使用せず、代わりにitemsを使用します。これにより、辞書項目に「ビュー」が返されます。 Python 3.0の 新機能 ドキュメント、および新しい ビューに関するドキュメント を参照してください。

1:辞書の挿入順序の保存は Python 3.7に追加

328

誰もしなかったので、py3kバージョンを追加します。

>>> d = { 'a': 1, 'b': 2, 'c': 3 }
>>> list(d.items())
[('a', 1), ('c', 3), ('b', 2)]
>>> [(v, k) for k, v in d.items()]
[(1, 'a'), (3, 'c'), (2, 'b')]
44
SilentGhost

リスト内包表記を使用できます。

[(k,v) for k,v in a.iteritems()] 

[ ('a', 1), ('b', 2), ('c', 3) ]を取得し、

[(v,k) for k,v in a.iteritems()] 

他の例。

リスト内包表記の詳細を読む 必要に応じて、それらを使用して何ができるかが非常に興味深いです。

16
mpeterson

名前付きタプルのリストを作成します

多くの場合、使用すると非常に便利です namedtuple。たとえば、キーとして「名前」、値として「スコア」の辞書があります。

d = {'John':5, 'Alex':10, 'Richard': 7}

アイテムをタプルとして一覧表示し、必要に応じて並べ替え、名前とスコアを取得できます。最高スコア(インデックス= 0)のプレイヤーがPython的に次のようになっているとします。

>>> player = best[0]

>>> player.name
        'Alex'
>>> player.score
         10

これを行う方法:

ランダムな順序または collections.OrderedDict の順序を維持したリスト

import collections
Player = collections.namedtuple('Player', 'name score')
players = list(Player(*item) for item in d.items())

値でソートされた順番(「スコア」):

import collections
Player = collections.namedtuple('Player', 'score name')

最低スコアで最初にソートされたもの:

worst = sorted(Player(v,k) for (k,v) in d.items())

最高のスコアで最初にソート:

best = sorted([Player(v,k) for (k,v) in d.items()], reverse=True)
9
Remi

必要なのは、dictitems()およびiteritems()メソッドです。 itemsは(key、value)タプルのリストを返します。タプルは不変であるため、元に戻すことはできません。したがって、アイテムを反復処理し、新しいタプルを作成して、反転した(値、キー)タプルを取得する必要があります。反復の場合、iteritemsは、リスト全体をメモリに保持する必要があるのではなく、ジェネレーターを使用して(key、value)タプルを生成するため、望ましいです。

Python 2.5.1 (r251:54863, Jan 13 2009, 10:26:13) 
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> a = { 'a': 1, 'b': 2, 'c': 3 }
>>> a.items()
[('a', 1), ('c', 3), ('b', 2)]
>>> [(v,k) for (k,v) in a.iteritems()]
[(1, 'a'), (3, 'c'), (2, 'b')]
>>> 
6
Barry Wark
[(k,v) for (k,v) in d.iteritems()]

そして

[(v,k) for (k,v) in d.iteritems()]
5
Robert Rossney
 >>> a = {'a':1、 'b':2、 'c':3} 
 
 >>> [(x、a [x] )a.keys()のxの場合] 
 [( 'a'、1)、( 'c'、3)、( 'b'、2)] 
 
 >>> [(a [x]、x)for a.keys()] 
 [(1、 'a')、(3、 'c')、(2、 'b') ] 
4
ismail

辞書のkeys()およびvalues()メソッドとZipによって。

Zipは、順序付けされた辞書のように機能するタプルのリストを返します。

デモ:

>>> d = { 'a': 1, 'b': 2, 'c': 3 }
>>> Zip(d.keys(), d.values())
[('a', 1), ('c', 3), ('b', 2)]
>>> Zip(d.values(), d.keys())
[(1, 'a'), (3, 'c'), (2, 'b')]
4
Vivek Sable
d = {'John':5, 'Alex':10, 'Richard': 7}
list = []
for i in d:
   k = (i,d[i])
   list.append(k)

print list
3
Harish

Python3.xの使用

for key, value in dict.items():
    temp = [key,value]
    dictlist.append(temp)

Python 2.7の場合

for key, value in dict.iteritems():
    temp = [key,value]
    dictlist.append(temp)

ありがとう

3
Dheeraj M Pai