如果我有一个带有键a0,a1,a2,b1,b2,b3的字典,我只想随机弹出两个带有以'a'开头的键而不是'b'的项目,如何修改下面的代码?
for key in random.sample(d.keys(), n):
del d[key] # or d.pop(key)
答案 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