如何在python中随机删除部分字典?

时间:2014-12-09 18:10:49

标签: python dictionary random

如果我有一个带有键a0,a1,a2,b1,b2,b3的字典,我只想随机弹出两个带有以'a'开头的键而不是'b'的项目,如何修改下面的代码?

for key in random.sample(d.keys(), n): 
    del d[key] # or d.pop(key) 

2 个答案:

答案 0 :(得分:5)

for key in random.sample([k for k in d if k.startswith("a")], n): 
    del d[key] 

[k for k in d if k.startswith("a")]获取以a开头的所有密钥,因此random.sample将返回以n

开头的a个密钥
In [21]: import random  
In [22]: d = {"a1":1,"a2":2,"b1":1,"b2":2}    
In [23]: for key in random.sample([k for k in d if k.startswith("a")], 2):
   ....:         del d[key]
   ....:         
In [24]: d
Out[24]: {'b1': 1, 'b2': 2}

答案 1 :(得分:1)

如果有人正在寻找更容易掌握的解决方案: 您可以利用字典以“随机顺序”直接创建的事实,以及每次字典变异时迭代顺序都会发生变化的事实。

count=0
for key in d:
    if key[0]=='a':
        if count<2:
            del d[key]
            count+=1
        else:
            break