辞書のリストから重複したキーを削除します以下に示す:リスト項目の上にPythonは、私はPythonで辞書のリストを持っている
l = [('Coach', ['firstname', 'lastname', 'age']),
('Player', ['firstname', 'league'])]
反復
for k, v in l:
print k, v
辞書のリストから重複したキーを削除します以下に示す:リスト項目の上にPythonは、私はPythonで辞書のリストを持っている
l = [('Coach', ['firstname', 'lastname', 'age']),
('Player', ['firstname', 'league'])]
反復
for k, v in l:
print k, v
あなたが値を収集するために、値型としてlist
でdefaultdict
を使用することができます。
In [5]: from collections import defaultdict
In [6]: data = [{u'value': u'firstname', u'key': u'Coach'},
{u'value': u'lastname', u'key': u'Coach'},
{u'value': u'age', u'key': u'Coach'},
{u'value': u'firstname', u'key': u'Player'},
{u'value': u'league', u'key': u'Player'}]
In [7]: l = defaultdict(list)
In [8]: for row in data:
...: l[row['key']].append(row['value'])
...:
In [9]: l
Out[9]:
defaultdict(list,
{'Coach': ['firstname', 'lastname', 'age'],
'Player': ['firstname', 'league']})
をそして、あなたは簡単にitems
方法使用してタプルのリストに辞書を変換することができます:
In [10]: list(l.items())
Out[10]:
[('Coach', ['firstname', 'lastname', 'age']),
('Player', ['firstname', 'league'])]
[(k, [x['value'] for x in v]) for k, v in itertools.groupby(sorted(data, key=lambda x: x['key']), lambda d: d['key'])]
をgroupby
は標準モジュールitertools
にあります。
EDIT:itertools.groupby
が連続している入力シーケンスが必要であることを指摘し 感謝@soon、これ事前にソートする必要があります。
'groupby'グループの連続する要素のみ – soon
@soon、大きなバグ、ちょうど固定、ありがとう。 –
[operator.itemgetter](https://docs.python.org/3/library/operator.html#operator.itemgetter)も便利です。 – soon