我正在寻找一种Python式的方法来解决以下问题。我有一个可行的解决方案,但它有复杂的流控制,只是不“漂亮”。(基本上,C++解决方案)
我有一张单子。每个列表包含多个不同类型的项目(每个列表可能有10个项目)。列表的总体顺序并不相关,但任何单个列表中项目的顺序都很重要。(我改不了)。在
我正在寻找一个额外的标签“我正在寻找一个额外的标签到列表的末尾”。但是,在这种情况下,“重复”列表是在多个预选字段中具有相等值的列表,但不是所有字段(没有“真正”重复项)。在
例如:如果这是5项列表中的原始数据,并且“复制”被定义为在第一个和第三个字段中具有相等的值:
['apple', 'window', 'pear', 2, 1.55, 'banana']
['apple', 'orange', 'kiwi', 3, 1.80, 'banana']
['apple', 'envelope', 'star_fruit', 2, 1.55, 'banana']
['apple', 'orange', 'pear', 2, 0.80, 'coffee_cup']
['apple', 'orange', 'pear', 2, 3.80, 'coffee_cup']
第一、第四和第五份名单是重复的,因此所有名单应更新如下:
^{pr2}$谢谢你的帮助和指导。我认为这可能超出了学习Python的范围。在
以下是我的解决方案(注释代码):
输出:
^{pr2}$编辑:谢谢尤德米尔。}
first_third = lst[0], lst[2]
是正确的,不是{编辑2:为了清楚起见,更改了变量名。在
编辑3:为了反映原海报真正想要的,以及他更新的名单。再也不漂亮了,想要的改变只是一种附属品。在
最好的办法是首先使用
itemgetter()
对列表进行排序,以选择要匹配的字段key
。这将导致所有匹配的关键字段显示在一起,以便可以轻松地对它们进行比较和标记。例如,匹配第一个和第三个字段的排序是:每一项与前一项的比较是直截了当的。在
好的,下面是完整的解决方案(使用itemgetter和groupby):
^{pr2}$下面是一个示例测试运行以显示用法:
^{3}$相关问题 更多 >
编程相关推荐