首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对排序列表进行迭代,返回更多的条目,而不是迭代非排序列表。

对排序列表进行迭代,返回更多的条目,而不是迭代非排序列表。
EN

Stack Overflow用户
提问于 2016-12-05 10:51:13
回答 1查看 55关注 0票数 0

我有一个包含元组[(a,b,c,1),(e,a,a,0),etc.]的列表,其中每个元组由三个字符串和一个整数组成。每个值都存储在unicode中,即(u'a',u'b',u'c',1)

我的列表包含98个独特的元组。对其中三人而言,以下情况成立:

代码语言:javascript
复制
tuple[2] == "SUPPLEMENTARY PLUMPY",

即:

代码语言:javascript
复制
(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)

当我在没有排序的情况下迭代列表时,如下所示:

代码语言:javascript
复制
for tuple in data:
    if tuple[2] == "SUPPLEMENTARY PLUMPY":
        print tuple

只有一个元组被打印出来:

代码语言:javascript
复制
(u'INDIA', u'MUMBAI (INDIA)', u'SUPPLEMENTARY PLUMPY', 0)

当我在排序时迭代列表时,如下所示:

代码语言:javascript
复制
for tuple in sorted(data):
    if tuple[2] == "SUPPLEMENTARY PLUMPY":
        print tuple

所有三个元组都打印出来了!

在98个唯一值中,94个是在我不对列表进行排序的情况下迭代的,如果我迭代排序列表,那么所有98都会被覆盖。快把我逼疯了。

我试着在一个最低限度的工作例子中复制这种行为,但是在那里这个问题并没有出现.该问题出现的代码是大量的,可悲的是不能被分享,所以我尽可能详细地描述了我的描述,希望能引发一些想法!

你们能帮我弄清楚这个吗?对为什么会发生这种事有任何猜测吗?

预先谢谢你,科恩

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-05 23:21:32

由于您还没有发布问题所在的实际代码,所以除了无所事事、无知的猜测之外,我们几乎没有什么可以做的。

我无所事事、无知的推测是这样的:您在代码中的某个地方更改列表,而不是在迭代它。通过在列表周围添加sorted(),可以有效地复制列表,因此只有原始列表在进行更改,而不是正在迭代的副本。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40972511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档