次のような辞書がある場合:
{ 'a': 1, 'b': 2, 'c': 3 }
どうすればこれに変換できますか?
[ ('a', 1), ('b', 2), ('c', 3) ]
そして、どうすればこれに変換できますか?
[ (1, 'a'), (2, 'b'), (3, 'c') ]
>>> 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に追加
誰もしなかったので、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')]
リスト内包表記を使用できます。
[(k,v) for k,v in a.iteritems()]
[ ('a', 1), ('b', 2), ('c', 3) ]
を取得し、
[(v,k) for k,v in a.iteritems()]
他の例。
リスト内包表記の詳細を読む 必要に応じて、それらを使用して何ができるかが非常に興味深いです。
名前付きタプルのリストを作成します
多くの場合、使用すると非常に便利です 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)
必要なのは、dict
のitems()
および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')]
>>>
[(k,v) for (k,v) in d.iteritems()]
そして
[(v,k) for (k,v) in d.iteritems()]
>>> 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') ]
辞書の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')]
d = {'John':5, 'Alex':10, 'Richard': 7}
list = []
for i in d:
k = (i,d[i])
list.append(k)
print list
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)
ありがとう