我编写了以下代码,使用字典和列表:
d = computeRanks() # dictionary of id : interestRank pairs
lst = list(d) # tuples (id, interestRank)
interestingIds = []
for i in range(20): # choice randomly 20 highly ranked ids
choice = randomWeightedChoice(d.values()) # returns random index from list
interestingIds.append(lst[choice][0])
似乎有可能出现错误,因为我不确定 lst 和 d.values()中的索引之间是否存在对应关系。
你知道如何更好地写这个吗?
答案 0 :(得分:3)
dict
的一项政策是dict.keys()
和dict.values()
的结果将与对应,只要字典的内容未被修改即可。
答案 1 :(得分:0)
正如@Ignacio所说,索引choice
确实对应于lst
的预期元素,因此您的代码逻辑是正确的。但是您的代码应该更简单:d
已经包含元素的ID,因此重写randomWeightedChoice
以获取字典并返回ID。
也许它会帮助您知道您可以使用d.items()
迭代字典的键值对:
for k, v in d.items():
etc.