2016-08-23 2 views
1

사용자 입력에 따라 목록의 목록을 정렬하고 싶습니다.사용자 입력에 따라 목록의 목록을 정렬하는 방법은 무엇입니까?

output = [[1,2],[3,4],[5,6],[7,8]] # input 
#   ^ ^ ^ ^
#   A  B  C  D 
A = output[0] ; B = output[1] ; C = output[2] ; D = output[3] # initialization 
userin = input('Enter sequence') 
seq_list = userin.split(',') 
print(seq_list) 

>>> Enter sequence B,C,D,A 
>>> ['B', 'C', 'D', 'A'] 

파이썬은 입력 값을 문자열로 해석하지만 해당 목록을 반영하고 싶습니다.

예상 출력 :

>>> Enter sequence B,C,D,A 
>>> [[3, 4], [5, 6], [7, 8], [1, 2]] 
+2

목록을 사전으로 변환 한 다음 사용자의 입력에 따라 키를 인쇄 할 수 있습니다. – grael

+1

글자 대신 숫자를 사용하고 색인을 위해 직접 사용하지 않는 이유는 무엇입니까? – Julien

+0

@grael OK dict로 해보겠습니다 –

답변

0

편집 : 나는 키와 명시된 문자를 사용하여 사전으로 output 변수를 다시 작성했습니다 . 그런 다음 사용자가 제공 한 순서대로 사전에 액세스하려면 seq_list의 목록 이해를 사용합니다.

output = {"A": [1,2], "B": [3,4],"C": [5,6],"D": [7,8]} 
userin = input('Enter sequence') 
seq_list = userin.split(',') 
temp_list = [output[key] for key in seq_list] 
print(temp_list) 
+0

왜 이것이 적합한 해결책인지 설명하는 텍스트를 입력하십시오 – hardillb

+0

@hardillb 만약 당신이 더 나은 해답을 더 잘 설명해 줄 수 있다면 그 이상, –

+0

@Tarun K 일부 설명은 반드시 귀하의 이익을위한 것이 아니라 검색을 통해이 문제에 직면 한 다음 사람을위한 것입니다. 낮은 품질의 답변으로 표시되었으므로 이제는 더 좋습니다. – hardillb

0

문자 대신 사용자 입력 번호를 만드는 것이 더 쉬울 것입니다. 그러나 글자를 고집하고 싶다면 사전에 매핑하면됩니다. 내 예를 들어 접근 방식은 다음과 같습니다

output = [[1,2],[3,4],[5,6],[7,8]] 
output_dict = {i:elem for i, elem in enumerate(output)} 
user_input = input('Enter sequence - numbers from 1 to 4 separated by comma') 
print [output_dict[elem - 1] for elem in user_input] 
1

당신은리스트의 DICT에 목록의 사용자 output 목록을 변환하는 사전 이해와 zip 기능을 사용할 수 있습니다.

output = [[1, 2], [3, 4], [5, 6], [7, 8]] 
d = {c: u for c, u in zip('ABCD', output)} 
print(d) 

userin = 'B,C,D,A' 
seq_list = [d[c] for c in userin.split(',')] 
print(seq_list) 

전형적인 출력

{'C': [5, 6], 'B': [3, 4], 'A': [1, 2], 'D': [7, 8]} 
[[3, 4], [5, 6], [7, 8], [1, 2]] 

파이썬 사전 정렬되지 않은, 그리고 파이썬 3 DICT d의 항목이 내 코드를 실행할 때마다 변경됩니다에 인쇄되는 순서입니다. 물론 하위 목록의 순서에는 영향을 미치지 않습니다. seq_list

관련 문제