모든 상호 요소를 공유하는 모든 하위 배열을 찾아 하나의 하위 배열로 병합해야합니다. 은 (Python으로 구현 그러나 어떤 알고리즘 생각 도움이 될 것입니다)상호 요소가있는 모든 하위 배열을 하나의 하위 배열로 병합
다차원 배열 구조 : 나는 하나 개의 목록으로 병합 '자동차', '자전거'와 '자전거'를 갖고 싶습니다
categories = {'car':['automobile','auto'],
'bike':['vehicle','motorcycle','motorbike','automobile'],
'software':['computer','macbook','apple','microsoft','mozilla'],
'firefox':['internet','mozilla','browser']
'bicycle':['vehicle']}
(
성능이 중요합니다. 내가 지금까지 함께 올 수
가장 좋은 방법은 (예를 들어 '자동차'=> '자동차')는이 요소 =>list_key의 1 차원 배열을 평평하게 유지하고 다음을 실행하는 것입니다 다차원 배열 (의사)의 각 목록에 대한 재귀 함수 :
function merge_similar(list_key):
For each element in categories[list_key]:
If flatten_array.has_key(element):
list_to_merge = flatten_array[element]
merge_similar(list_to_merge) /* merge other lists which share an element with our newly found similar list */
categories[list_key] = merge(categories [list_key], categories[list_to_merge])
delete categories[list_to_merge]
어떤 생각이 어떻게 성능의 향상을?
감사합니다.
사전 키이므로 순서가 지정되어 있지 않으므로 "첫 번째 목록의 키 유지"가 적절하지 않은지 확인하십시오. "첫 번째"는 그 성명에서 의미가 없습니다. – Triptych
새 목록의 키는 실제로 중요하지 않습니다 - 수정되었습니다. 감사합니다. –