簡體   English   中英

Python:如何從字典鍵中隨機選擇一個值?

[英]Python: How do I randomly select a value from a dictionary key?

我有一本字典:

dict = {
    "Apple": ["Green", "Healthy", "Sweet"],
    "Banana": ["Yellow", "Squishy", "Bland"],
    "Steak": ["Red", "Protein", "Savory"]
}

我想從每個鍵中打印一個隨機值,所以我試着先將它們放入列表中:

import random

food = [dict.value.random.choice()]

但這不起作用(毫不奇怪,它看起來過分和令人困惑)

然后我想print食物:

print food

並看到:

green
squishy
savory

或隨機選擇的任何值。

正在創建不必要的列表? 我會繼續發布嘗試。

只是為了澄清為什么這不是重復:我不想從字典中隨機抓取一個項目,我想從字典中的每個列表中隨機抓取一個項目。

您可以使用列表推導來循環您的值:

>>> my_dict = {
...     "Apple": ["Green", "Healthy", "Sweet"],
...     "Banana": ["Yellow", "Squishy", "Bland"],
...     "Steak": ["Red", "Protein", "Savory"]
... }
>>> import random
>>> food=[random.choice(i) for i in my_dict.values()]
>>> food
['Savory', 'Green', 'Squishy']

對於你想要的打印,你可以使用join功能或循環food並逐個打印元素:

>>> print '\n'.join(food)
Savory
Green
Squishy
>>> for val in food :
...      print val
... 
Savory
Green
Squishy

您還可以使用for循環:

import random

dict = {
    "Apple": ["Green", "Healthy", "Sweet"],
    "Banana": ["Yellow", "Squishy", "Bland"],
    "Steak": ["Red", "Protein", "Savory"]
}

for key, value in dict.items():
    print random.choice(value), key

結果:

Red Steak
Healthy Apple
Bland Banana

使用列表推導,如

import random
choices = [random.choice(v) for k, v in your_dict.items()] # iterate over the dict items
print(choices)

產量

['Protein', 'Green', 'Squishy']

(BTW-將名稱'dict'更改為其他內容)

# for python3
from random import randint
data = {
  "Apple": ["Green", "Healthy", "Sweet"],
  "Banana": ["Yellow", "Squishy", "Bland"],
  "Steak": ["Red", "Protein", "Savory"]
}

for  key, value in data.items():
  print(key + ":" + value[randint(0,2)])

輸出 (將根據隨機int值改變)

sh-4.2# python3 main.py                                                                                                                                                         
Apple:Sweet                                                                                                                                                                     
Steak:Red                                                                                                                                                                       
Banana:Squishy                                                                                                                                                                    

修正案01(@ Selcuk的問題)

for  key, value in data.items():
  length = len(value)
  print(key + ":" + value[randint(0,length-1)])

在徹底瀏覽了文檔並使用上面提供的所有非常有用的答案之后,我發現這是最干凈和最明顯的:

import random  

food_char = {
    "Apple": ["Green", "Healthy", "Sweet"],
    "Banana": ["Yellow", "Squishy", "Bland"],
    "Steak": ["Red", "Protein", "Savory"]
}

food=[random.choice(i) for i in food_char.values()]

for item in food:
    print item

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM