相关疑难解决方法(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万
查看次数

是否在Python 3.6+中订购了字典?

字典在Python 3.6中排序(至少在CPython实现下),与之前的版本不同.这似乎是一个重大变化,但它只是文档中的一小段.它被描述为CPython实现细节而不是语言特性,但也暗示这可能成为未来的标准.

在保留元素顺序的同时,新字典实现如何比旧字典实现更好?

以下是文档中的文字:

dict()现在使用PyPy开创的"紧凑"表示.与Python 3.5相比,新dict()的内存使用量减少了20%到25%.PEP 468(在函数中保留**kwargs的顺序.)由此实现.这个新实现的顺序保留方面被认为是一个实现细节,不应该依赖(这可能会在未来发生变化,但是在更改语言规范之前,希望在几种版本的语言中使用这个新的dict实现为所有当前和未来的Python实现强制命令保留语义;这也有助于保持与随机迭代顺序仍然有效的语言的旧版本的向后兼容性,例如Python 3.5).(由INADA Naoki在issue 27350中提供.最初由Raymond Hettinger提出的想法.)

2017年12月更新:Python 3.7 保证dict保留插入顺序

python dictionary python-3.x python-internals python-3.6

386
推荐指数
5
解决办法
8万
查看次数

Python集与列表

在Python中,哪种数据结构更有效/更快?假设顺序对我来说并不重要,无论如何我会检查重复项,Python设置是否比Python列表慢?

python performance list set data-structures

168
推荐指数
6
解决办法
12万
查看次数

Java hashmap真的是O(1)吗?

我已经看到了一些关于SO re Java hashmaps及其O(1)查找时间的有趣声明.有人可以解释为什么会这样吗?除非这些哈希图与我买的任何哈希算法有很大的不同,否则必须始终存在包含冲突的数据集.

在这种情况下,查找将是O(n)而不是O(1).

有人可以解释他们是否 O(1),如果是,他们如何实现这一目标?

java big-o hashmap time-complexity

153
推荐指数
6
解决办法
11万
查看次数

从列表中删除多个元素

是否可以同时从列表中删除多个元素?如果我想删除索引0和2处的元素,并尝试类似del somelist [0],然后是del somelist [2],则第二个语句实际上会删除somelist [3].

我想我总是可以先删除编号较高的元素,但我希望有更好的方法.

python list

142
推荐指数
10
解决办法
22万
查看次数

有没有值的Python dict?

而不是这个:

a = {"foo": None, "bar": None}
Run Code Online (Sandbox Code Playgroud)

有没有办法写这个?

b = {"foo", "bar"}
Run Code Online (Sandbox Code Playgroud)

并且仍然允许b持续时间访问(即不是Python集,无法键入)?

python dictionary

19
推荐指数
2
解决办法
2万
查看次数

使用Python删除对象列表中的重复项

我有一个对象列表,我有一个充满记录的数据库表.我的对象列表有一个title属性,我想从列表中删除任何具有重复标题的对象(保留原始标题).

然后我想检查我的对象列表是否有数据库中任何记录的重复,如果是,请在将它们添加到数据库之前从列表中删除这些项目.

我已经看到了从这样的列表中删除重复项的解决方案:myList = list(set(myList)),但我不确定如何使用对象列表执行此操作?

我也需要维护对象列表的顺序.我也想也许我可以difflib用来检查标题的差异.

python mysql sqlobject

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

在python中,set.pop()是否确定?

我知道python集的元素没有排序.调用pop方法返回一个任意元素; 我很好.

我想知道的是,当集合具有相同的历史记录时,pop是否总是会返回相同的元素.当然,在python的一个版本中,我不介意python的不同版本/实现是否有自己的功能.特别是,我问的是python 2.7.在这种情况下,这不仅仅是api的实现问题.

我在游戏的程序性地牢生成器中使用了很多集合,我希望结果对于给定的种子是确定性的.

python set

18
推荐指数
2
解决办法
9173
查看次数

哪个更快:迭代集合和迭代列表

假设我有一个字符串列表和一组相同的字符串:

l = [str1, str2, str3, str4, ...]
s = set([str1, str2, st3, str4, ...])
Run Code Online (Sandbox Code Playgroud)

我需要与我拥有的短语进行字符串比较:comparephrase

comparephrase我需要迭代列表或集合中的所有元素,并生成比较字符串和比较字符串之间的比率。我知道set()当我们进行会员测试时速度会更快。但是,我不是在进行成员资格测试,而是比较我拥有的短语和列表/集中的字符串。set()仍然提供更快的速度吗?如果是这样,为什么?在我看来,这个集合实际上是一个里面有列表的集合。由于我们迭代集合中的列表,这不会花费很长时间吗?

python set

7
推荐指数
2
解决办法
7718
查看次数

为什么Python中set的大小可以比dict大?

为什么seta 的大小比 a 的大小大dict

s = set()
d = {}

for i in range(20):
    s.add(i)
    d[i] = 1

    print(f'{i+1}:', s.__sizeof__(), d.__sizeof__())
Run Code Online (Sandbox Code Playgroud)

输出:

...
17: 712 624
18: 712 624
19: 2248 624
20: 2248 624
Run Code Online (Sandbox Code Playgroud)

第 19 个结果让我困惑。

python size dictionary set

6
推荐指数
0
解决办法
508
查看次数