python - 从字典中随机删除项目

标签 python random dictionary

如何在 Python 中从字典中删除随机项目?

我必须从字典中删除指定数量的项目,所以我尝试使用 dict.popitem 我认为它是随机的,但它似乎不是。

作为docs说:

Remove and return an arbitrary (key, value) pair from the dictionary.

对于我的问题,假设我有一个像这样的字典(一个例子):

>>> d = dict(zip((string.ascii_lowercase), range(1, 10)))
>>> d
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8}

现在我需要从中删除一些项目(计数由用户指定)。

所以我这样写:

>>> for _ in range(4):          # assume 4 items have to removed
...     d.popitem()
... 
('a', 1)
('c', 3)
('b', 2)
('e', 5)

但是这段代码的问题是,每次运行脚本时,popitem() 弹出完全 相同的项目。你可以随意测试这个,我已经试过很多次了。

所以我的问题是:

  • 为什么 popitem() 没有按应有的方式工作?删除任意项目不是随机的吗?
  • 如何从字典中删除随机项目?

最佳答案

你说的是这个吗?

import random
for i in range(4):
    some_dict.pop( random.choice(some_dict.keys()) )   

关于python - 从字典中随机删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4809044/

相关文章:

c++ - C++ 随机生成器中有错误吗?

C#高效存储大int数据

Python 将元组列表转换为嵌套字典列表

python - PyQt5:QTableWidget 中复选框的状态更改

python - 以这种格式将字典导出到文本文件

python - Django : How to query users based on latest post

php - 带有种子的 array_rand

python - 比较随机和urandom

python - 如何将字典键值对转换为元组

python - 这个用于排序数字的 lambda 如何工作?