list
はdict
です。最初の変数を空白で分割する場合はlist
をnamedtuple
(推奨)または単純なtuple
に変換する必要があります。辞書のリストを名前付きタプルのリストに変換するPythonicの方法
それを行うにはもっとpythonicな方法はありますか?
私はコードを少し簡略化しました。理解、ジェネリック表現、itertoolsの使用法が歓迎されました。
データイン:
dl = [{'a': '1 2 3',
'd': '*',
'n': 'first'},
{'a': '4 5',
'd': '*', 'n':
'second'},
{'a': '6',
'd': '*',
'n': 'third'},
{'a': '7 8 9 10',
'd': '*',
'n': 'forth'}]
単純なアルゴリズム:
from collections import namedtuple
some = namedtuple('some', ['a', 'd', 'n'])
items = []
for m in dl:
a, d, n = m.values()
a = a.split()
items.append(some(a, d, n))
出力:以下
[some(a=['1', '2', '3'], d='*', n='first'),
some(a=['4', '5'], d='*', n='second'),
some(a=['6'], d='*', n='third'),
some(a=['7', '8', '9', '10'], d='*', n='forth')]
ありがとうを、それは何です必要があります – scraplesh
警告!辞書の 'values()'は[特定の順序ではありません](http://docs.python.org/library/stdtypes.html#dict.items)です!この解決法がうまくいけば、 'a、d、n'が実際にこの順番で返されます。ただの偶然です。別のバージョンのPythonを使用するか、別の方法でdictsを作成すると、破損する可能性があります。 @ eryksunのコメントのように、キーを直接使用してください。 –
@klesh - 編集を参照してください、またはこれはあなたをかむために戻ってきます! – detly