相关疑难解决方法(0)

如何在保留订单的同时从列表中删除重复项?

是否有内置功能可以从Python中的列表中删除重复项,同时保留顺序?我知道我可以使用一个集来删除重复项,但这会破坏原始顺序.我也知道我可以像这样滚动自己:

def uniq(input):
  output = []
  for x in input:
    if x not in output:
      output.append(x)
  return output
Run Code Online (Sandbox Code Playgroud)

(感谢您放松代码示例.)

但是如果可能的话,我想利用内置或更多的Pythonic习语.

相关问题:在Python中,从列表中删除重复项的最快算法是什么,以便所有元素在保留顺序的同时是唯一的?

python list unique duplicates

722
推荐指数
12
解决办法
52万
查看次数

订购柜台配方如何运作

阅读如何super()工作,我遇到了关于如何创建有序计数器的这个方法:

from collections import Counter, OrderedDict

class OrderedCounter(Counter, OrderedDict):
     'Counter that remembers the order elements are first seen'
     def __repr__(self):
         return '%s(%r)' % (self.__class__.__name__,
                            OrderedDict(self))
     def __reduce__(self):
         return self.__class__, (OrderedDict(self),)
Run Code Online (Sandbox Code Playgroud)

例如:

oc = OrderedCounter('adddddbracadabra')

print(oc)

OrderedCounter(OrderedDict([('a', 5), ('d', 6), ('b', 2), ('r', 2), ('c', 1)]))
Run Code Online (Sandbox Code Playgroud)

有人能够解释这是如何神奇地起作用的吗?

这也出现在Python文档中.

python counter dictionary ordereddictionary python-3.x

20
推荐指数
1
解决办法
7457
查看次数

python计算列表中的项目并保持其出现顺序

给定:列表,例如l = [4,4,4,4,5,5,5,6,7,7,7] Todo:获取元素的计数并保持其出现顺序,例如:[( 4,4),(5,3),(6,1),(7,3)]

我可以这样做:

tmpL    = [(i,l.count(i)) for i in l]
tmpS    = set()
cntList = [x for x in tmpL if x not in tmpS and not tmpS.add(x)]
Run Code Online (Sandbox Code Playgroud)

但有更好的方法吗?我在这里看到了这个链接,但它对计数进行了排序,因此打破了顺序.

编辑:性能不是解决方案的问题,更可取的是内置的东西.

python

4
推荐指数
2
解决办法
1638
查看次数

如何计算物品的数量,但保持它们出现的顺序?

例如,我需要计算一个单词出现在列表中的次数,不按频率排序,而是按单词出现的顺序排序,即插入顺序.

from collections import Counter

words = ['oranges', 'apples', 'apples', 'bananas', 'kiwis', 'kiwis', 'apples']

c = Counter(words)

print(c)
Run Code Online (Sandbox Code Playgroud)

所以代替: {'apples': 3, 'kiwis': 2, 'bananas': 1, 'oranges': 1}

我宁愿得到: {'oranges': 1, 'apples': 3, 'bananas': 1, 'kiwis': 2}

我真的不需要这种Counter方法,任何可以产生正确结果的方法对我来说都是可以的.

python counter dictionary ordereddictionary python-3.x

4
推荐指数
2
解决办法
1779
查看次数