-1

私は辞書とリストを使って以下のコードを書きました:

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

lstd.values()のインデックスが対応しているかどうかわからないため、エラーが発生する可能性があります。

これをもっと上手に書く方法を知っていますか?

4

2 に答える 2

3

のポリシーの1つは、辞書の内容が変更されない限り、dictの結果が対応することです。dict.keys()dict.values()

于 2012-03-18T12:41:51.277 に答える
0

@Ignacio が言うように、インデックスchoiceは の意図した要素に対応しているlstため、コードのロジックは正しいです。しかし、あなたのコードはもっと単純なはずです:dすでに要素の ID が含まれているのでrandomWeightedChoice、辞書を取得して ID を返すように書き直してください。

d.items()おそらく、辞書のキーと値のペアを次のように反復処理できることを知っておくと役立ちます。

for k, v in d.items():
    etc.
于 2012-03-18T13:03:45.740 に答える