2012-10-14 56 views
1

我想創建一個字典數據類型使用Python 3.2。我正在使用隨機方法在mydict中隨機選擇一個值並打印出值。不過,我也想打印此關鍵字(例如Animal:elephant),但我只能打印關鍵字或值。我該如何解決它?Dictonary數據類型與隨機在Python

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

回答

4

mydict.values(),毫不奇怪,給你的價值。您可以使用mydict.items()來獲取鍵/值對(作爲元組)。

編輯:這聽起來像你試圖做這樣的事情:

category = random.choice(list(mydict.keys()) 
item = random.choice(mydict[category])) 
print category, item 
+0

但使用mydict.items()將返回我的整個列表。我先隨機選擇動物或水果,然後從與鍵相關的值中進行選擇。比方說隨機方法選擇動物和大象後,我的代碼只能打印出大象,但我想在屏幕上打印出動物和大象 – user1744424

+0

@ user1744424:請參閱我編輯的答案。如果要分開保存兩個值,則需要執行兩個步驟。 – BrenBarn

+0

謝謝!這是我正在尋找的!感謝您快速高效的回覆。 – user1744424

0

mydict.values()將打印,它可能不是你所期望的:

>>> random.choice(mydict.values()) 
('strawberry', 'mango', 'watermelon', 'orange', 'durian') 
>>> random.choice(mydict.values()) 
('elephant', 'giraffe', 'rhinoceros', 'hippopotamus', 'leopard') 

我認爲你真正想要做的就是將所有鍵的所有值組合起來,隨機選擇一個值,然後找出它屬於哪個鍵。要做到這一點,首先需要選擇所有的值隨機他們:

>>> 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)