如何将列表中的字典转换成字典

时间:2017-03-03 08:32:01

标签: python dictionary

我想把这个列表改为:

[{u'host': u'node54', u'key': u'cpu_load_average_limit', u'value': 4.0}, 
 {u'host': u'node54', u'key': u'ram_allocation_ratio', u'value': 4.0}, 
 {u'host': u'node54', u'key': u'cpu_allocation_ratio', u'value': 4.0},
 {u'host': u'node53', u'key': u'cpu_load_average_limit', u'value': 4.0}, 
 {u'host': u'node53', u'key': u'ram_allocation_ratio', u'value': 4.0}, 
 {u'host': u'node53', u'key': u'cpu_allocation_ratio', u'value': 4.0}]

成:

{u'node54': {u'cpu_allocation_ratio': 4.0, u'ram_allocation_ratio': 4.0, u'cpu_load_average_limit': 4.0}, 
 u'node53': {u'cpu_allocation_ratio': 4.0, u'ram_allocation_ratio': 4.0, u'cpu_load_average_limit': 4.0}}

1 个答案:

答案 0 :(得分:0)

entries = [
 {u'host': u'node54', u'key': u'cpu_load_average_limit', u'value': 4.0}, 
 {u'host': u'node54', u'key': u'ram_allocation_ratio', u'value': 4.0}, 
 {u'host': u'node54', u'key': u'cpu_allocation_ratio', u'value': 4.0},
 {u'host': u'node53', u'key': u'cpu_load_average_limit', u'value': 4.0}, 
 {u'host': u'node53', u'key': u'ram_allocation_ratio', u'value': 4.0}, 
 {u'host': u'node53', u'key': u'cpu_allocation_ratio', u'value': 4.0}
]

result = {}
for entry in entries:
    result.setdefault(entry['host'], {})[entry['key']] = entry['value']

assert result == {u'node54': {u'cpu_allocation_ratio': 4.0, u'ram_allocation_ratio': 4.0, u'cpu_load_average_limit': 4.0}, u'node53': {u'cpu_allocation_ratio': 4.0, u'ram_allocation_ratio': 4.0, u'cpu_load_average_limit': 4.0}}