<p>你可以采取两种方法。一种是在字典中有一个键列表,从这个列表中随机选择一个键,然后将其删除。这看起来像这样:</p>
<pre><code>from random import choice
keys = klasa.keys()
while keys: #while there are keys left in 'keys'
key = choice(keys) #get a random key
print("Calling %s" % (klasa.pop(key))) #get the value at that key, and remove it
keys.remove(key) #remove key from the list we select keys from
</code></pre>
<p><code>klasa.pop(key)</code>除了删除键之外,还将返回与该键关联的值:</p>
<pre><code> | pop(...)
| D.pop(k[,d]) -> v, remove specified key and return the corresponding value.
| If key is not found, d is returned if given, otherwise KeyError is raised
</code></pre>
<p>另一种方法是在交钥匙之前将钥匙列表洗牌,然后逐一检查,即:</p>
<pre><code>from random import shuffle
keys = klasa.keys()
shuffle(keys) #put the keys in random order
for key in keys:
print("Calling %s" % (klasa.pop(key)))
</code></pre>
<hr/>
<p>如果要一次删除一个人,只需执行以下操作:</p>
<pre><code>print("Calling %s" % klasa.pop(choice(klasa.keys())))
</code></pre>
<p>虽然这意味着您每次都将生成一个键列表,但最好将其存储在一个列表中,并在删除键时将其从列表中删除,就像第一个建议的方法一样。<code>keys = .keys() ... a_key = choice(keys), klasa.pop(key), keys.delete(key)</code></p>
<p><em>注意:</em>在python3.x中,您需要转到<code>keys = list(klasa)</code>,因为<code>.keys</code>不像2.x那样返回列表</p>