2017-03-09 10 views
0

는 왜이 내가 두 번째 for 루프를 주석 때, 튜플을 인쇄 in sort_tup_from_list for key, val in tup: ValueError: not enough values to unpack (expected 2, got 1)Python3에서 iterables를 풀고 있습니까?

# list with tuples 
lst = [("1", "2"), ("3", "4")] 

# sorting list by tuple val key 
def sort_tup_from_list(input_list): 
    tmp = [] 
    print(tup) 
    for tup in input_list: 
     for key, val in tup: 
      tmp.append((val, key)) 
      tmp.sort(reverse=True) 
    return tmp 

print(sort_tup_from_list(lst)) 

반환 :

lst = [("1", "2"), ("3", "4")] 
def sort_tup_from_list(input_list): 
    tmp = [] 
    for tup in input_list: 
     print(tup) 
     # for key, val in tup: 
     #  tmp.append((val, key)) 
     #  tmp.sort(reverse=True) 
    return tmp 

print(sort_tup_from_list(lst)) 

출력 :

('1', '2') 
('3', '4') 
[] 

그래서, 튜플이 있습니다. 왜 그들은 스스로를 풀지 않는가?

+1

왜냐하면 당신은'tup'을 반복하기 때문이다. 그리고'tup '의 요소는 단일 문자열입니다. 2 개의 char 문자열을 입력했다면 char을 가진 두 개의 변수로 압축을 풀 것입니다. –

+0

당신이 옳습니다! 두 자로 된 문자열을 추가하는 것은 예상대로 작동하지만 이것은 내가 원하는 것이 아닙니다. 문제 해결;) –

답변

3

두 번째 for 루프가 튜플의 항목을 반복하고 있지만 두 개의 항목을 모두 가져 오는 중입니다. 나는 이것이 당신이 원하는 것이라고 생각한다 :

# list with tuples 
lst = [("1", "2"), ("3", "4")] 

# sorting list by tuple val key 
def sort_tup_from_list(input_list): 
    tmp = [] 
    print(tmp) 
    for key,val in input_list: 
     tmp.append((val, key)) 
     tmp.sort(reverse=True) 
    return tmp 

print(sort_tup_from_list(lst)) 
+0

네, 고마워요. 지금 튜플을 반복 할 때 하나의 반복 만 가질 수 있습니다. –