【发布时间】:2017-03-09 12:43:04
【问题描述】:
为什么返回in sort_tup_from_list for key, val in tup: ValueError: not enough values to unpack (expected 2, got 1)
# 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))
当我注释掉第二个 for 循环时,它会打印元组:
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')
[]
所以,元组就在那里。他们为什么不自己打开包装?
【问题讨论】:
-
因为你迭代了
tup。而tup的元素是单个字符串。如果您输入了两个字符的字符串,它们将解压成两个带有字符的变量。 -
你是对的!添加两个字符的字符串按预期工作,但这不是我想要的。问题解决了;)
标签: list python-3.x tuples iterable-unpacking