繁体   English   中英

从字典中保存没有价值的钥匙

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM