2013-08-15 6 views
1

사전 목록을 가져 와서 특정 형식의 순열 목록을 만들고 싶습니다.사전 목록의 순열 만들기

예를 들어 사전에 아래 목록이 있습니다. 특정 형식으로이 항목을 사용하여 가능한 모든 목록을 만들려고합니다 : (예 : 결과 = [A 유형의 dict, B 유형의 dict, B 유형의 dict, C 유형의 dict, C 유형의 dict, Type의 dict D, E 유형의 dict, F 유형의 dict]) 유형 B의 두 항목은 같을 수없고 유형 C의 두 항목은 같을 수 없습니다. 순열을보다 효율적으로 처리하는 방법에 대한 팁이 도움이 될 수 있도록 많은 항목을 처리하게 될 것입니다.

{'Items':[ 
{'Name':'name10','Type':'A','measure1':20,'measure2':20}, 
{'Name':'name20','Type':'A','measure1':25,'measure2':30}, 
{'Name':'name30','Type':'B','measure1':15,'measure2':40}, 
{'Name':'name40','Type':'B','measure1':20,'measure2':50}, 
{'Name':'name50','Type':'B','measure1':25,'measure2':60}, 
{'Name':'name60','Type':'C','measure1':15,'measure2':70}, 
{'Name':'name70','Type':'C','measure1':20,'measure2':80}, 
{'Name':'name80','Type':'C','measure1':25,'measure2':90}, 
{'Name':'name90','Type':'D','measure1':10,'measure2':30}, 
{'Name':'name85','Type':'D','measure1':15,'measure2':30}, 
{'Name':'name75','Type':'E','measure1':53,'measure2':30}, 
{'Name':'name65','Type':'E','measure1':10,'measure2':30}, 
{'Name':'name55','Type':'F','measure1':56,'measure2':10}, 
{'Name':'name45','Type':'F','measure1':10,'measure2':20} 
]} 
+0

어쩌면 이렇게 될 수 있나요? http://docs.scipy.org/doc/numpy/reference/generated/numpy.random.permutation.html –

+0

당신이 어떻게 보이고 싶은지에 대한 더 좋은 예를 들려 줄 수 있습니까? {{ "A": {{ "이름": "이름 10", { "measure1": "20"}, { "이름": "이름 20", { "measure1": "30"}}}' – TankorSmash

+0

나는 순열이 들어오는 곳을 찾지 못한다. 중복 제거/병합 만 하시겠습니까? – roippi

답변

0

은의이 품목의 당신의 사전 변수 x에 가정 해 봅시다 : 단순히 사전 설정()을 취할 좋았을 것이다하지만 파이썬에서 불가능

x_set = set((i['Name'], i['Type'], i['measure1'], i['measure2']) for i in x['Items']) 
items = [{'Name': i[0], 'Type': i[1], 'measure1': i[2], 'measure2': i[3]} for i in sorted(x_set)] 
new_x = {'Items': items} 

. 사전은 튜플에 압축을 풀고 사전에 다시 포장해야했습니다.

큰 세트의 항목을 처리하려면 이름 또는 유형에 따라 "파편"으로 나누는 것이 좋습니다.

+0

내가 지금하고있는 일은 다음과 같다. a_s = filter (lambda (d) : d [ 'Type'] == 'A', listDict) '다음에 for 루프를 사용하여 각 루프를 반복합니다.'for f in first : 초 s : (세 번째는 t) : result.append ([f, s, t]) ' for 루프의 모든 결과를 내 결과에 추가합니다. – user99106

+0

그래, 그게 내가 타입별로 샤드/그룹으로 나누는 것을 의미 한거야. –

+0

질문에 대한 답변이 '수락'으로 표시하십시오. 감사! –