就像我被允许这样做:
(编辑 - 我也不允许这样做,抱歉搞砸了,但无论如何我想我的问题更多的是如何在循环中进行并行分配)
for (x,i) in ([0,1,2],[3,4,5]):
# do something
为什么我不允许在每个循环中执行此操作(不同的列表长度)
for (x,i) in ([4,6,5,7,8,9],[1,2,3]):
# do something
我知道你得到一个“ValueError:解压缩的值太多了”,但是当我完成迭代时,为什么循环不会停止?
真正使用这个就是我想做的事情
for (keys,i) in (sorted(dic.keys(),key=custom_sort), range(10)):
print dic[keys]
我正在排序字典以及只打印前10个顶级结果(假设字典有数百个键) - 我只想要前10个结果 .
既然不允许这种语法,那么下一个最好的做法是什么呢?
谢谢
5 回答
你不能在第一个例子中做你做的事 - 它给出了完全相同的错误 . 所以错误不是来自不同长度的列表 .
我想你的意思是:
它与不同长度的列表一样有效
对于这种东西,itertools是你的朋友 .
在你的情况下,itertools.islice()会做的伎俩:
或者,如果您还需要索引,请使用
zip
或itertools.izip
:请
raise
:看起来你正试图这样做:
看看itertools,特别是izip() . 其中有很多善良......例如
islice()
函数,Ferdinand Beyer's answer和其他recipes .你不被允许这样做:
for
遍历容器中的元素 . 每个元素都是一个包含两个以上元素的列表 .试试这个:
这是你想要的 . 不需要
for
.请注意,您声明的第一个示例实际上并不存在 . 你做不到:
你得到同样的错误 .