2014-07-10 2 views
0

각 값이 다른 사전이 될 사전을 만들려고합니다. 여기 내가하는 일이있다.파이썬 사전의 가치는 다른 사전입니다 - 가장 좋은 방법은 무엇입니까?

import json 
import boto.ec2.cloudwatch 

conn = boto.ec2.cloudwatch.connect_to_region('ap-southeast-1') 
alarms = conn.describe_alarms() 

all_dict = {} 
whitelist = ["name", "metric", "namespace", "statistic", "comparison", "threshold", "period", "evaluation_periods", "unit", "description", "dimensions", "alarm_actions", "insufficient_data_actions", "ok_actions"] 
i = 1 
x = [] 
for alarm in alarms: 
    single_dict = {} 
    for attr in whitelist: 
     single_dict[attr] = getattr(alarm, attr) 
    all_dict[i] = single_dict 
    i = i+1 
print json.dumps(all_dict, sort_keys=True, indent=4, separators=(',', ': ')) 

완벽하게 작동하지만, 내가 한 것보다 더 똑똑한 방법이있을 것이라고 생각합니다.

+4

이 질문은 [CodeReview.SE] (http://codereview.stackexchange.com/help/on-topic)에 더 적합 할 수 있습니다. 당신은 작업 코드를 가지고 있고 개선을 요구하고 있습니다. –

+3

그러나 여기있는 동안, 단순한 목록이 아닌 정수를 증가시키는 사전을 갖는 것에는 거의 요지가 없습니다. – jonrsharpe

+0

@jonrsharpe 대신 목록을 가질 수는 있지만 목록의 JSON 덤프를 만들면 어떻게 반복 할 수 있는지 잘 모르겠습니다. – hjelpmig

답변

0

대신 len(all_dict)을 사용하면 약간 어둡게 보일 수 있습니다. 또한 문맥이 아닐 수도 있지만, x이 무엇을하는지 확신 할 수 없습니다.

코드가 작동하면 순전히 교육 또는 미학을위한 것입니다. 메모리 및 처리 소비 측면에서 변경 사항은 무시해도 좋습니다.