[求助]关于数组的转换问题

YIDAY 2012-02-18 10:35:15
现在有这样的数组结构lt1

lt1 = [
{'goid':1111,'kid':222222,'cost':2,'date':'2012-02-11'},
{'goid':1112,'kid':222225,'cost':5,'date':'2012-05-11'},
{'goid':1111,'kid':222226,'cost':8,'date':'2012-02-11'},
]

要转换成lt2这样的结构

lt2 = [
{
'1111': #以goid的值为key
{
'2012-02-11': #date的值为key
[
{'goid':1111,'kid':222222,'cost':2,'date':'2012-02-11'},
{'goid':1111,'kid':222226,'cost':8,'date':'2012-02-11'}
]
}
'1112':
{
'2012-05-11':
[
{'goid':1112,'kid':222225,'cost':5,'date':'2012-05-11'}
]
}
}
]

如果用php数组来实现很简单,但python就不知道了~~~
请帮帮忙,先谢谢了
...全文
64 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
panghuhu250 2012-02-19
  • 打赏
  • 举报
回复
dict的setdefault方法在这儿很有用。


>>> lt1 = [ {'goid':1111,'kid':222222,'cost':2,'date':'2012-02-11'}, {'goid':1112,'kid':222225,'cost':5,'date':'2012-05-11'}, {'goid':1111,'kid':222226,'cost':8,'date':'2012-02-11'}, ]
>>> def transform(lt):
... result = {}
... for d in lt:
... result.setdefault(d['goid'], {}).setdefault(d['date'], []).append(d)
... return [result]
>>> transform(lt1)
9: [{1111: {'2012-02-11': [{'cost': 2,
'date': '2012-02-11',
'goid': 1111,
'kid': 222222},
{'cost': 8,
'date': '2012-02-11',
'goid': 1111,
'kid': 222226}]},
1112: {'2012-05-11': [{'cost': 5,
'date': '2012-05-11',
'goid': 1112,
'kid': 222225}]}}]
>>>

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧