2014-11-20 3 views
1

이 질문은 "목록의 파이썬 정렬"질문과 유사하지만 잠재적 인 키의 반복 번호로 인해 사전 사용에 문제가 있습니다.두 개의 목록을 중복 키로 정렬

다음은 예입니다. 다음 두 목록으로 시작하십시오.

사전을 사용하면 키가됩니다. [5,6,6,1,6,1,6,1,1,2,1,2,1,2,2,1]

[13,14,15,10,16,11, ,

[5,6 : 17,12,12,13,13,14,14,15,16,17]

나는이다, 내가 원하는 방식으로 첫 번째 목록을 재 배열 할 수 있어요 6,6,6,1,1,1,1,1,1,2,2,2,2,1]

두 번째 목록은 첫 번째 목록에 똑같은 정렬로 유지하고 정확하게 표시하고 싶습니다. like : [13,14,15,16,17,10,11,12,12,13,14,13,14,15,16,17]

잠재적 인 키 목록에서 두 번째 목록의 해당 값으로 위치별로 정렬 된 값이 반복됩니다. 게시물 아래에 다른 사람들처럼

+0

파이썬 [튜플] (https://docs.python.org/2/tutorial/datastructures.html#tuples-and-sequences)의 사용 사례와 비슷합니다. 2 아이템'튜플 (tuples) '의 단일 목록을 사용하는 것을 고려 했습니까? 이렇게하면 각'tuple '의 첫 번째 항목으로 다시 정렬 할 때'list'가 모든 두 번째 항목의 올바른 순서를 유지합니다. – huu

+0

목록과 사전간에 어떤 관계가 있습니까? 나는 당신이 무엇을 요구하는지 잘 이해하지 못합니다. –

+0

사전은 OP가 두 목록의 결합을 어떻게 개념화하려고하는지에 대한 개념이라고 생각합니다. 문제는 사전에 반복 키가 없어서 실제로 작동하지 않는다는 것입니다. 나는 OP가 그러한 가설적인 매핑을 만드는 법을 묻고 있으며, 키의 재정렬을 통해 보존해야한다고 생각한다. – huu

답변

0

, 나는 완전히 문제를 (당신이 얻으려는 관계에 대한보다 구체적인 될 수 있을까?) 이해하지 못하는,하지만 어쩌면 zip 귀하의 질문에 대한 답변입니다 :

>>> a = [5,6,6,6,6,1,1,1,1,1,1,2,2,2,2,1] 
>>> b = [13,14,15,16,17,10,11,12,12,13,14,13,14,15,16,17] 
>>> alignment = zip(a, b) 
>>> alignment 
[(5, 13), (6, 14), (6, 15), (6, 16), (6, 17), (1, 10), (1, 11), (1, 12), (1, 12), (1, 13), (1, 14), (2, 13), (2, 14), (2, 15), (2, 16), (1, 17)] 

을 편집 :

key_list = [5,6,6,1,6,1,6,1,1,2,1,2,1,2,2,1] 
values_list = [13,14,15,10,16,11,17,12,12,13,13,14,14,15,16,17] 
zipped_lists = zip(key_list, values_list) 
sorted_zip = sorted(zipped_lists) 
pattern = [5,6,6,6,6,1,1,1,1,1,1,2,2,2,2,1] 
temp_dict = {} 
for key, value in sorted_zip: 
    if key not in temp_dict: 
     temp_dict[key] = [value] 
    else: 
     temp_dict[key].append(value) 

final_list = [] 
for i in pattern: 
    final_list.append((i, temp_dict[i].pop(0))) 

그리고 물론, final_list 당신의 결과입니다.

+0

고마워, 너는 내가 이걸 가지고 가려고하는 이유와 사전의 아이디어가 왜 효과가 없었는지에 대한 생각을 가지고있다.하지만 나는 그 순서대로가 아니라 b라는 이름의 목록을 가지고 있지 않다. 나는 다른 3 목록 만 가지고있다. 첫 번째 2 개의 목록을 함께 압축하면 내 세 번째 목록을 사용하여 압축 된 목록과 같이 재정렬 할 수 있습니까? –

+0

@AnneIzy이 편집 내용을 확인하십시오. 잘 이해하면 해결 될 것입니다. 키의 그룹 (그리고 그룹에 의해 1과 그 값, 2와 그 값, 5 ... 등등) 값이 어떤 식 으로든 단조롭다 고 가정했습니다. 나는 이것이 실제로 당신이 상상할 수있는 것이 아닌지 확신하지 못하지만,이 경우에는 효과가 있습니다. – erhesto

+0

그건 그렇고, 실제로 이것은 정말 좋은 문제였습니다. 이 유형의 문제에 대해 이것이 최적의 솔루션인지는 모르겠지만 현재의 알고리즘 기술로는 더 이상 찾을 수 없습니다. – erhesto

관련 문제