[英]Saving a key from a dictionary without value
我將加權圖表示為字典,其中鍵表示一個頂點,以下列表表示入射在該頂點上的邊(邊的第一個數字權重和相鄰頂點的第二個數字權重):
wGraph = { 1 : [[2, 2],[3, 4],[3, 3]],
3 : [[3, 2],[5, 4],[7, 5]],
2 : [[2, 1],[4, 4],[3, 6]],
4 : [[3, 1],[4, 2],[1, 6],[5, 3]],
6 : [[3, 2],[1, 4],[8, 5]],
5 : [[7, 3],[8, 6],[9, 7]],
7 : [9, 5]}
我想將一個沒有它的值的隨機鍵從字典保存到一個稱為Visited的列表中。
random_num = random.randrange(len(wGraph))
visited = []
如何根據隨機數從字典中獲取密鑰?
要從某些值中進行隨機選擇,請使用random.choice
。 您要從字典的鍵中進行選擇,因此正是您要傳遞的內容:
random.choice(wGraph.keys())
答案取決於細節-您有多少個鍵,它們始終是1 ... max,您想重新訪問之前已經訪問過的鍵,還是隨着時間的推移添加了圖節點,或者它們保持不變,您最終會訪問所有鍵還是僅訪問其中的一小部分,依此類推。
一個想法:如果您的鍵始終如示例中那樣順序編號,則可以只使用random_num + 1
。 您已經知道它們是字典的關鍵,並且您無需構建任何特殊的東西。
另一種選擇是將密鑰列表隨機化一次:
>>> keys_to_visit = wGraph.keys()
>>> keys_to_visit.shuffle()
>>> first_key_to_visit = keys_to_visit.pop()
並且只要需要一個新的,就繼續調用.pop()。 僅當您不想重新訪問節點並且節點列表是恆定的時,此方法才有效。
import random
visited = []
def random_key():
wGraph = {1: [[2, 2], [3, 4], [3, 3]],
3: [[3, 2], [5, 4], [7, 5]],
2: [[2, 1], [4, 4], [3, 6]],
4: [[3, 1], [4, 2], [1, 6], [5, 3]],
6: [[3, 2], [1, 4], [8, 5]],
5: [[7, 3], [8, 6], [9, 7]],
7: [9, 5]}
random_key = random.choice(wGraph.keys())
if random_key not in visited:
visited.append(random_key)
print visited
for e in range(7):
random_key()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.