[英]How can i find the key of a random picken value from a dictionary in Python?
我是 Python 的初學者。 我制作了一本列表字典。 我想選擇一個隨機值,然后知道該值的鍵。 那可能嗎? 例如
`lex = {"q1": [["B", "A", "C", "D"],["2" ,"D"]],
"q2": [["C", "A", "Z", "D"],["W","K"]],
"q3": [["A", "K", "D", "C"],["me", "S"]],
"q4": [["B", "L", "A", "F"],[ "1974", "D"]]}
lex_list = list(lex.values())
pick_value = random.sample(lex_list,1)`
有沒有辦法知道哪個是隨機值的關鍵? 我的目的是從列表中刪除該pick_value。非常感謝任何建議。 謝謝你。
如果您對隨機選擇的鍵和值都感興趣,那么為什么不考慮隨機選擇一個鍵並收集該鍵的值呢?
import random
lex = {"q1": [["B", "A", "C", "D"],["2" ,"D"]],
"q2": [["C", "A", "Z", "D"],["W","K"]],
"q3": [["A", "K", "D", "C"],["me", "S"]],
"q4": [["B", "L", "A", "F"],[ "1974", "D"]]}
# Randomly pick one key
r_key = random.choice(list(lex.keys()))
# Get the value corresponding to that key
r_value = lex[r_key]
print(r_key, r_value)
這使用random.choice
從可迭代中選擇一個元素。 這輸出:
q4 [['B', 'L', 'A', 'F'], ['1974', 'D']]
如果您真的希望繼續使用您已經擁有隨機值的策略,但想要相應的隨機密鑰,那么這可能會起作用:
import random
lex = {"q1": [["B", "A", "C", "D"],["2" ,"D"]],
"q2": [["C", "A", "Z", "D"],["W","K"]],
"q3": [["A", "K", "D", "C"],["me", "S"]],
"q4": [["B", "L", "A", "F"],[ "1974", "D"]]}
lex_list = list(lex.values())
pick_value = random.sample(lex_list,1)
# Find the corresponding key(s)
keys = [key for key, value in lex.items() if value == pick_value[0]]
print(keys)
這輸出例如['q2']
。 請記住,我一直將 key 稱為多個,因為理論上多個鍵可能對應於相同的值。 如果這在您的程序中沒有發生,那么您可以將keys[0]
作為您的密鑰。
該策略使用列表推導循環遍歷來自lex
的鍵值對,然后過濾對應於pick_value
的value
。
再次,我推薦第一種策略。
我了解您的目標是找到所選隨機值的鍵,然后將其刪除。 下面的代碼就是這樣做的。 還要記住,如果您的字典中有重復的值,代碼將刪除第一個鍵:找到該值的值對。
在重復的情況下,需要找到所有鍵的列表,然后在單獨的 for 循環中刪除。 pick_value 是一個嵌套列表,因此 pick_value[0] 在這里工作。
生成的 new_list 刪除了 pick_value。
for key,value in lex.items():
if value == pick_value[0]:
lex.pop(key)
break
new_list = list(lex.values())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.