为什么它使用python3而不是python2为下面的程序说ValueError

时间:2018-03-30 04:56:40

标签: python-3.x python-2.7 dictionary hashtable

k=['d','e','f']
v=[4,5,6]
h=zip(k,v)      #zipping
for i,j in h:
  print(i ,':',j)
(k,v)=zip(*h)   #unzipping
print(k)
print(v)
output:

Traceback (most recent call last):

 File "hasht.py", line 6, in <module>
    (k,v)=zip(*h)

ValueError: not enough values to unpack (expected 2, got 0)

2 个答案:

答案 0 :(得分:0)

zip在Python 2中创建一个列表,因此您的h是一个可以随时检查的值。 zip在Python 3中创建了一个迭代器,因此使用print语句的循环耗尽了h

使用h = list(zip(k, v))在Python 2和3中获得相同的行为。

答案 1 :(得分:0)

k=['d','e','f']
v=[4,5,6]
h=zip(k,v)      #zipping
zip_list=list(h)
for i,j in h:
  print(i ,':',j)
type(h)
h

这里你的zip现在在python 3.x中是空的。因此错误

(k,v)=zip(*h)   #unzipping on empty object
print(k)
print(v)

您仍然可以迭代多次创建的zip_list对象

for m,n in zip_list:
   print (m,n)