2013-10-15 4 views
0

나는 이것이 n00b 질문이라고 확신하지만, 나는 그것을 이해하는 것처럼 보이지 않는다. 어떤 도움을 주셔서 감사합니다.사전을 한 형식에서 다른 형식으로 변경하는 방법?

{date1:{key1:result1, key2:result2},date2:{key2:result3}}

내가 각각의 값에 대한 일일 평균을 파악하려는 : 나는 파일의 각 파일 내에서 일련의를 생성하는 응용 프로그램을 가지고

는 같은 형식의 사전입니다. 사전에

unique_key_dict = {date1:[file1_result, file2_result],date2:[file1_result, file2_result]}

내가 아는되지 않습니다 키의 이름 또는 얼마나 많은 고유 키가있을 것이다 : 그래서 모든 파일에서 결과를 집계 고유 키 당 하나 개의 사전을 만들 싶습니다 , 비록 내 전체 데이터 세트에서 25 개 이상의 고유 키가 없지만 속도면에서 각 파일을 한 번만 열려고합니다.

어떻게 파이썬에서 다음을 작성합니까?

for date in file_dict: 
    for key in file_dict[date]: 
     # if key_dict does not exist from a previous file or date, create it 
     # once the dictionary exists, append this value to the list tied to the date key. 

동적으로 키 이름을 사용하여 사전을 만드는 방법을 알아낼 수 없습니다. 동적으로 이름을 인쇄 할 경우 "dict_for_%s" % key을 쓰지만 인쇄하지 않으려 고합니다. 사전을 만들려고합니다.

또한 방금 한 개의 방대한 사전을 만들 수 있습니다 ... 어느 것이 더 빠릅니까? 단일 방대한 사전 또는 15-25 개의 별도 사전

+0

당신이 파일의 dicts을 저장하는 방법? – forefinger

+0

JSON 일뿐입니다. 다음은 샘플입니다. {{ "2013-05-07T07 : 00 : 00 + 0000": { "recommended_pages": 1}, "2013-04-19T07 : 00 : 00 + 0000": { "page_profile": 1} , "2013-01-07T08 : 00 : 00 + 0000": { "mobile": 2, "page_profile": 1}} ' –

+0

'dict_for_whatever'와 같은 이름의 사전을 만들려고하십니까? 특정 이름의 객체입니까? 그렇다면 좋은 아이디어는 아니므로 @forefinger가 권장하는 것을 수행하고 사전에 마무리해야합니다. – DSM

답변

2

이 수행의 일부 :

unique_key_dict = {} 
for date in file_dict: 
    for key in file_dict[date]: 
    if date not in unique_key_dict: unique_key_dict[date] = [] 
    unique_key_dict[date].append(file_dict[date][key]) 

또는 그런 다음이 dicts 값의 배열에 날짜를 매핑 사전인가에 각 키를 매핑하는 딕셔너리를했다, 아마도 당신이

unique_key_dict = {} 
for date in file_dict: 
    for key in file_dict[date]: 
    if key not in unique_key_dict: unique_key_dict[key] = {} 
    if date not in unique_key_dict[key]: unique_key_dict[key][date] = [] 
    unique_key_dict[key][date].append(file_dict[date][key]) 

을 원하는 .

그 후 평균 효율적으로 활용하려면 다음 작업을

for key in unique_key_dict: 
    for date in unique_key_dict[key]: 
    avg = sum(float(x) for x in unique_key_dict[key][date])/len(unique_key_dict[key][date]) 
    print key, date, avg 
+0

예, 테스트 할 unique_key_dict 부분을 어떻게 생성합니까? –

+0

unique_key_dict의 초기화를 포함하도록 편집 – forefinger

+0

먼저 도움을 주셔서 감사합니다! 그러나 고유 한 키마다 별도의 dicts를 만들려는 경우 하나의 unique_key_dict 만 생성합니다 ... 거의 "dict_for_ % s"% key'와 비슷하지만 인쇄하지 않고 사전을 생성하려고합니다. . –

관련 문제