微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

itertools/ groupby/ for 循环

如何解决itertools/ groupby/ for 循环

我最近一直在寻找一种更好的方法来检查 group 是否已被处理。预期的行在下面显示代码中 (if (key == group[0][0]):)。 我试图实现的想法如下:

如果满足上述条件,则必须在循环 for group in groups 的每一轮中对其进行检查。因此,在第一组中的所有项目都已打印后,for 循环将跳转到下一组并执行相同操作(在检查第二个条件 if (key == item[0]): 之后)。重点是防止 for 循环跳到下一组,因为键和每个项目的第一个元素之间没有匹配,这意味着;不会在那里找到或打印任何元素。话虽如此,我会避免不跳入任何其他具有另一个密钥的组,以节省时间和内存。

所以问题是;如果有更好的方法来实现这个想法,因为我自己的短语条件是一种原始条件(检查第一个单词是否与关键单词相同)。

非常感谢!

things = [("animal","lion"),("object","computer"),("animal","giraffe"),"tiger"),"table"),("clothes","jacket"),"dog")]
sorted_things = sorted(things)
groups = []
special_keys = []
for key,group in groupby(sorted_things,lambda x: x[0]):
    groups.append(list(group))
    special_keys.append(key)
counting = 0
for key in special_keys:
    print("These things are to this key " + key + " sorted: ")
    for group in groups:
        if (key == group[0][0]):
            for item in group:
                if (key == item[0]):
                    print("                                          ",item[1])

这是输出

These things are to this key animal sorted:
                                           dog
                                           giraffe
                                           lion
                                           tiger
These things are to this key clothes sorted:
                                           jacket
These things are to this key object sorted:
                                           computer
                                           table

解决方法

所以问题是;如果有更好的方法来实现这个想法

为了获得相同的输出,我会这样做:

from itertools import groupby
from operator import itemgetter

sorted_things = [
 ('animal','dog'),('animal','giraffe'),'lion'),'tiger'),('clothes','jacket'),('object','computer'),'table'),]

for key,values in groupby(sorted_things,key=itemgetter(0)):
    print(f'These things are to this key {key} sorted:')
    for key,value in values:
        print(' ' * 42,value)

注意groupby()函数已经有了逻辑,“在第一组中的所有项目都已经打印完后,for循环会跳转到下一组。”

不需要检查匹配键的第一个元素。 groupby() 函数已经为您做到了。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?