2

我有这个

original = {
   "state_id": "1,2",
   "name": "A,B"
}

我可以很容易地转向这个

original_splitted = {k: v.split(',') for k, v in original.iteritems()}
{
   "state_id": ['1', '2'],
   "name": ['A' ,'B']
}

但我想要的是这样的:

[
    {"state_id": '1', "name": "A"}, 
    {"state_id": '2', "name": "B"} 
]

我正在寻找一种很酷的“单线”理解魔法来实现这一点(避免使用大型嵌套循环)

4

1 回答 1

4

如何使用 2-linerzip(*)和列表理解:

>>> vals = zip(*(x.split(',') for x in original.itervalues()))
>>> [dict(zip(original, v)) for v in vals]
[{'state_id': '1', 'name': 'A'}, {'state_id': '2', 'name': 'B'}]
于 2014-06-06T19:14:29.593 回答