从不带valu的字典中保存密钥

2024-09-30 10:32:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我将加权图表示为字典,其中键表示顶点,以下列表表示顶点上的边(边的第一个数字权重和相邻顶点的第二个数字):

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的列表中。在

^{pr2}$

我怎样才能根据随机数从字典里得到钥匙?在


Tags: 列表字典数字权重钥匙顶点pr2visited
3条回答

要从某些值中随机选择,请使用random.choice。你想从字典的键中选择,所以这正是你输入的:

random.choice(wGraph.keys())

答案取决于你有多少个键,它们总是数字1…max,你想重新访问你以前访问过的键吗,图节点是随时间增加还是保持不变,你最终会访问所有键还是只访问其中的一小部分,等等。在

一个想法:如果您的键总是按顺序编号的,那么您可以使用random_num + 1。你已经知道它们是dict的关键,你不必构造任何特殊的东西。在

另一个选择是将密钥列表随机化一次:

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

相关问题 更多 >

    热门问题