mydict.values()
値が出力されますが、期待どおりではない場合があります。
>>> random.choice(mydict.values())
('strawberry', 'mango', 'watermelon', 'orange', 'durian')
>>> random.choice(mydict.values())
('elephant', 'giraffe', 'rhinoceros', 'hippopotamus', 'leopard')
あなたが本当にやりたいことは、すべてのキーのすべての値を組み合わせ、ランダムに値の 1 つを選択し、それがどのキーに属しているかを調べることだと思います。そのためには、まずすべての値を選択してランダム化する必要があります。
>>> for i in mydict.values():
... for v in i:
... values_list.append(v)
...
>>> values_list
['strawberry', 'mango', 'watermelon', 'orange', 'durian', 'elephant', 'giraffe',
'rhinoceros', 'hippopotamus', 'leopard']
これで、ランダムな値を取得できます。
>>> random.choice(values_list)
'leopard'
>>> random.choice(values_list)
'strawberry'
>>> random.choice(values_list)
'hippopotamus'
次のステップは、これがどのキーに属しているかを調べることです:
>>> i = random.choice(values_list)
>>> ''.join("%s: %s" % (k,i) for k in mydict if i in mydict[k])
'Fruit: watermelon'
デフォルトでは、辞書を反復処理すると、キーが取得されます。
>>> for i in mydict:
... print i
...
Fruit
Animal
この行''.join("%s: %s" % (k,i) for k in mydict if i in mydict[k])
は、このループの長いバージョンです。
i = random.choice(values_list)
for k in mydict:
if i in mydict[k]:
print "%s: %s" % (k,i)