1

Python 3.2 を使用して辞書データ型を作成しようとしています。私は mydict の値をランダムに選択し、値を出力するために random メソッドを使用しています。ただし、キーも印刷したいのですが (動物: ゾウなど)、キーまたは値のいずれかしか印刷できません。どうすればいいですか?

mydict = {'Animal': ('elephant', 'giraffe', 'rhinoceros', 'hippopotamus', 'leopard'),
          'Fruit': ('strawberry', 'mango', 'watermelon', 'orange', 'durian')}
random_word = random.choice(random.choice(list(mydict.values())))
4

2 に答える 2

4

mydict.values()当然のことながら、値が得られます。を使用mydict.items()して、キーと値のペアを (タプルとして) 取得できます。

編集:次のようなことをしようとしているようです:

category = random.choice(list(mydict.keys())
item = random.choice(mydict[category]))
print category, item
于 2012-10-14T06:16:46.850 に答える
0

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)
于 2012-10-14T06:34:23.440 に答える