2017-06-17 26 views
0

如何转换以下defaultdict()如何转换/更新defaultdict中的键值信息?

defaultdict(<class 'dict'>, { 
    'key1_A': { 
    'id': 'key1', 
    'length': '663', 
    'type': 'A'}, 
    'key1_B': { 
    'id': 'key1', 
    'length': '389', 
    'type': 'B'}, 
    'key2_A': { 
    'id': 'key2', 
    'length': '865', 
    'type': 'A'}, 
    'key2_B': { 
    'id': 'key2', 
    'length': '553', 
    'type': 'B' ........}}) 
  • value of the id i.e key1成为关键,而key called length改变为length_A or B与前面type属于相应的值。

    defaultdict(<class 'dict'>, { 'key1': { 'length_A': '663', 'length_B': '389'}, 'key2': { 'length_A': '865', 'length_B': '553'}})

感谢,

+0

哪里是你的代码,使远吗?您是否遇到需要帮助的特定问题? – smarx

回答

1

我想这你想要做什么:

from collections import defaultdict 
import pprint 

d = { 
    'key1_A': { 
     'id': 'key1', 
     'length': '663', 
     'type': 'A', 
    }, 
    'key1_B': { 
     'id': 'key1', 
     'length': '389', 
     'type': 'B', 
    }, 
    'key2_A': { 
     'id': 'key2', 
     'length': '865', 
     'type': 'A', 
    }, 
    'key2_B': { 
     'id': 'key2', 
     'length': '553', 
     'type': 'B', 
    }, 
} 

transformed = defaultdict(dict) 
for v in d.values(): 
    transformed[v["id"]]["length_{}".format(v["type"])] = v["length"] 

pprint.pprint(transformed) 

# Output: 
# defaultdict(<class 'dict'>, 
#    {'key1': {'length_A': '663', 'length_B': '389'}, 
#    'key2': {'length_A': '865', 'length_B': '553'}}) 
+0

优秀而可怕! – everestial007