如何在python中转换此数据结构

用户名

我有以下Python结构。

{'2015-03-03': 
    [{'traffic': 80.0, 'Server': 'Server1'},
     {'traffic': 20.0, 'Server': 'Server2'}],
 '2015-03-04':
    [{'traffic': 100.0, 'Server': 'Server1'}]}

我需要将其转换为字典

{"Series": 
    [{'traffic': [80.0, 20.0], 'Server': 'Server1'},
     {'traffic’: [100.0, 0], ’Server': 'Server2'}],
 "dates" : 
    [“2015-03-03”, 2015-03-04”]}

我尝试了以下方法。(结果有第一本字典)

final_data = {}
final_data['series'] = []
final_data['dates'] = sorted(result.keys())
for key in final_data['dates']:
    final_data['series'].append(result[key])

但这不会产生转换后的数据结构。有什么帮助吗?

杰德沃兹

关于什么:

di = {
    '2015-03-03': [{'traffic': 80.0, 'Server': 'Server1'},
                   {'traffic': 20.0, 'Server': 'Server2'}],
    '2015-03-04': [{'traffic': 100.0, 'Server': 'Server1'}]
}


dates = sorted(di.keys())                                       # Get all dates
servers = set(e['Server'] for v in di.values() for e in v)      # Get all servers

# Refactor the dictionary
df = {}
for (k,v) in di.iteritems():
    df[k] = {}
    for elem in v:
        df[k][elem['Server']] = elem['traffic']

# Compute series (if the [date][server] key-chain doesn't exist in df, use 0)
series = []
for server in servers:
    traffic = []
    for date in dates:
        try:    traffic.append(df[date][server])
        except: traffic.append(0)
    series.append({'traffic':traffic, 'Server':server})

# Create output dict
do = {
    'Series': series,
    'dates': dates,
}

print do

输出:

{
    'Series': [
        {'traffic': [80.0, 100.0], 'Server': 'Server1'}, 
        {'traffic': [20.0, 0], 'Server': 'Server2'}
    ], 
    'dates': ['2015-03-03', '2015-03-04']
}

请注意,这与您的预期输出不同在您的预期输出中,您拥有do['Series'][0]['traffic'] = [80.0, 20.0]但我拥有[80.0, 100.0]-因为它们是与“ Server1”相对应的流量条目。

如果您真的想要[80.0, 20.0],我将需要知道您用于建立该连接的逻辑。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章