我得到了如下的非常大的数据,结构可能无法修复,但我想找到每个关键名称'使用'多个'使用的'到10.我怎么办?困难的部分是由于某种原因一段时间内的列表结构将被更改,并且使用的':inf应该保持不变。
[{'block_data':
[{'item_title': u'\u4e3b\u673a',
'item_num': 5,
'item_class': 'hosts',
'item_url': '/admin/hypervisors/',
'usage': [{'used': 5, 'title': u'\u6d3b\u52a8'},
{'used': 5, 'title': u'\u542f\u7528'}]},
{'item_title': u'\u8d44\u6e90',
'usage': [{'used': 1319,
'limit': 1536,
'title': u'\u53ef\u5206\u914d\u5185\u6838'},
{'used': 5828230,
'limit': 6024840,
'unit': 'MB',
'title': u'\u53ef\u5206\u914d\u5185\u5b58'}],
'item_class': 'resources'},
{'item_title': u'\u9879\u76ee',
'item_num': 24,
'item_class': 'tenants',
'item_url': '/identity/',
'usage': [{'used': 23,
'limit': 24,
'title': u'\u6d3b\u52a8'}]},
{'item_title': u'\u7528\u6237',
'item_num': 125,
'item_class': 'users',
'item_url': '/identity/users/',
'usage': [{'used': 125,
'limit': 125,
'title': u'\u6d3b\u52a8'}]}
],
'block_title': u'\u8d44\u6e90'},
{'block_data':
[{'item_title': u'\u4e91\u4e3b\u673a',
'item_num': 124,
'item_class': 'instances',
'item_url': '/admin/instances/',
'usage': [{'used': 124,
'title': u'\u4e91\u4e3b\u673a'},
{'used': 245,
'title': u'\u865a\u62df\u5185\u6838'},
{'used': 222722,
'unit': 'MB',
'title': u'\u5185\u5b58'},
{'used': 15,
'title': u'\u5feb\u7167'}]},
{'item_title': u'\u4e91\u786c\u76d8',
'item_num': 69,
'item_class': 'volumes',
'item_url': '/admin/volumes/',
'usage': [{'used': 69,
'title': u'\u4e91\u786c\u76d8'},
{'used': 'inf',
'title': u'\u4e91\u786c\u76d8\u5feb\u7167'},
{'used': 'inf',
'unit': 'MB',
'title': u'\u786c\u76d8\u53ca\u5feb\u7167\u5bb9\u91cf'}]},
{'item_title': u'\u955c\u50cf',
'item_num': 27,
'item_class': 'images',
'item_url': '/admin/images/',
'usage': [{'used': 27,
'title': u'\u955c\u50cf'},
{'used': 11, 'title': u'Linux'},
{'used': 3, 'title': u'Windows'},
{'used': 13, 'title': u'ISO'}]},
{'item_title': u'\u5b89\u5168\u7ec4',
'item_num': 39,
'item_class': 'access_and_security',
'usage': [{'used': 39,
'title': u'\u5b89\u5168\u7ec4'}]
}],
'block_title': u'\u8ba1\u7b97'},
{'block_data':
[{'item_title': u'\u7f51\u7edc',
'item_num': 39,
'item_class': 'networks',
'item_url': '/admin/networks/',
'usage': [{'used': 39,
'title': u'\u7f51\u7edc'}]
},
{'item_title': u'\u5916\u7f51IP',
'item_num': 40,
'item_class': 'floating_ips',
'usage': [{'used': 40,
'title': u'\u5916\u7f51IP'}]
},
{'item_title': u'\u8def\u7531\u5668',
'item_num': 9,
'item_class': 'routers',
'item_url': '/admin/routers/',
'usage': [{'used': 9,
'title': u'\u8def\u7531\u5668'}]}],
'block_title': u'\u7f51\u7edc'}]
答案 0 :(得分:0)
我认为,答案是:
for item in list:
for usage in item['block_data']:
for used in usage['usage']:
new_used = used['used'] * 10
至少,该代码对我有用。
答案 1 :(得分:0)
使用列表理解:
[k['used']*10 if isinstance(k['used'], (int, long)) else k['used'] for i in a for j in i['block_data'] for k in j['usage']]
Out[29]:
[500,
500,
131900,
582823000,
2300,
12500,
12400,
24500,
22272200,
1500,
6900,
'inf',
'inf',
2700,
1100,
300,
1300,
3900,
3900,
4000,
900]