+ -
当前位置:首页 → 问答吧 → 请教 python 元组嵌套字典 转换成 字典嵌套队列 如何实现

请教 python 元组嵌套字典 转换成 字典嵌套队列 如何实现

时间:2011-03-30

来源:互联网

({'f_id': 32,'f_instance_id': 450L,  'f_rule_level': 3,},

{ 'f_id': 33,  'f_instance_id': 450L,  'f_rule_level': 3,},
{ 'f_id': 33,  'f_instance_id': 450L,  'f_rule_level': 2,},
{ 'f_id': 33,  'f_instance_id': 450L,  'f_rule_level': 1, },

{ 'f_id': 34,  'f_instance_id': 450L,  'f_rule_level': 3, },
{ 'f_id': 34,  'f_instance_id': 450L,  'f_rule_level': 2,},
{ 'f_id': 34,  'f_instance_id': 450L,  'f_rule_level': 1, })

上面是个元组嵌套字典
我想根据f_id相同的作为一组 转换成 下面的样式  


{
   32:[{'f_id': 32,'f_instance_id': 450L,  'f_rule_level': 3, }]
   33:[{ 'f_id': 33,  'f_instance_id': 450L,  'f_rule_level': 3},   { 'f_id': 33,  'f_instance_id': 450L,    'f_rule_level': 2,},  { 'f_id': 33L,  'f_instance_id': 450L,    'f_rule_level': 1,}
   34:[{ 'f_id': 34,  'f_instance_id': 450L,  'f_rule_level': 3},   { 'f_id': 34,  'f_instance_id': 450L,    'f_rule_level': 2,},  { 'f_id': 34,  'f_instance_id': 450L,    'f_rule_level': 1,}]
}

我是敲PHP 的 PHP 里面的话可以直接用个 二维数组来实现
foreach( $array as $key=>$value){
            $rs[$value['f_id']][]  = $value
}
这样就可以。

可是在PYTHON 下面实在不会像各位请教一下。

作者: jianglu07   发布时间: 2011-03-30

rs = {}
for a in array:
        key = a['f_id']
        if rs.has_key(key):
                rs[key].append(a)
        else:
                rs[key]=[a]

作者: lqefn   发布时间: 2011-03-31

  1. from pprint import pprint

  2. tuple_dict = ({'f_id': 32,'f_instance_id': 450L,  'f_rule_level': 3,},

  3. { 'f_id': 33,  'f_instance_id': 450L,  'f_rule_level': 3,},
  4. { 'f_id': 33,  'f_instance_id': 450L,  'f_rule_level': 2,},
  5. { 'f_id': 33,  'f_instance_id': 450L,  'f_rule_level': 1, },

  6. { 'f_id': 34,  'f_instance_id': 450L,  'f_rule_level': 3, },
  7. { 'f_id': 34,  'f_instance_id': 450L,  'f_rule_level': 2,},
  8. { 'f_id': 34,  'f_instance_id': 450L,  'f_rule_level': 1, })

  9. format_dict = {}

  10. for item in tuple_dict:
  11.     format_dict.setdefault(item['f_id'], []).append(item)

  12. pprint(format_dict)
复制代码
#print result:

{32: [{'f_id': 32, 'f_instance_id': 450L, 'f_rule_level': 3}],
33: [{'f_id': 33, 'f_instance_id': 450L, 'f_rule_level': 3},
      {'f_id': 33, 'f_instance_id': 450L, 'f_rule_level': 2},
      {'f_id': 33, 'f_instance_id': 450L, 'f_rule_level': 1}],
34: [{'f_id': 34, 'f_instance_id': 450L, 'f_rule_level': 3},
      {'f_id': 34, 'f_instance_id': 450L, 'f_rule_level': 2},
      {'f_id': 34, 'f_instance_id': 450L, 'f_rule_level': 1}]}

作者: llbgurs   发布时间: 2011-03-31