我有一个包含元组[(a,b,c,1),(e,a,a,0),etc.]的列表,其中每个元组由三个字符串和一个整数组成。每个值都存储在unicode中,即(u'a',u'b',u'c',1)。
我的列表包含98个独特的元组。对其中三人而言,以下情况成立:
tuple[2] == "SUPPLEMENTARY PLUMPY",即:
(u'FRANCE', u'ROUEN (FRANCE)', u'SUPPLEMENTARY PLUMPY', 0)
(u'INDIA', u'MUMBAI (INDIA)', u'SUPPLEMENTARY PLUMPY', 0)
(u'PAKISTAN', u'KARACHI (PAKISTAN)', u'SUPPLEMENTARY PLUMPY', 0)当我在没有排序的情况下迭代列表时,如下所示:
for tuple in data:
if tuple[2] == "SUPPLEMENTARY PLUMPY":
print tuple只有一个元组被打印出来:
(u'INDIA', u'MUMBAI (INDIA)', u'SUPPLEMENTARY PLUMPY', 0)当我在排序时迭代列表时,如下所示:
for tuple in sorted(data):
if tuple[2] == "SUPPLEMENTARY PLUMPY":
print tuple所有三个元组都打印出来了!
在98个唯一值中,94个是在我不对列表进行排序的情况下迭代的,如果我迭代排序列表,那么所有98都会被覆盖。快把我逼疯了。
我试着在一个最低限度的工作例子中复制这种行为,但是在那里这个问题并没有出现.该问题出现的代码是大量的,可悲的是不能被分享,所以我尽可能详细地描述了我的描述,希望能引发一些想法!
你们能帮我弄清楚这个吗?对为什么会发生这种事有任何猜测吗?
预先谢谢你,科恩
发布于 2016-12-05 23:21:32
由于您还没有发布问题所在的实际代码,所以除了无所事事、无知的猜测之外,我们几乎没有什么可以做的。
我无所事事、无知的推测是这样的:您在代码中的某个地方更改列表,而不是在迭代它。通过在列表周围添加sorted(),可以有效地复制列表,因此只有原始列表在进行更改,而不是正在迭代的副本。
https://stackoverflow.com/questions/40972511
复制相似问题