列表索引之间的对应起源于字典

时间:2012-03-18 12:38:30

标签: python list dictionary indices

我编写了以下代码,使用字典和列表:

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()中的索引之间是否存在对应关系。

你知道如何更好地写这个吗?

2 个答案:

答案 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.