1

この質問のために短縮しましたが、コードは次のようになります。

total1=0
total2=0
total3=0
score1=20
score2=30
score3=40


players = [{'user': 'Player1', 'total': total1, 'score': score1},
{'user': 'Player2', 'total': total2, 'score': score2},
{'user': 'Player3', 'total': total3, 'score': score3}]

for i in players:
    if players[i]['score'] <= 30:
        ***code goes here***

私はこのTypeErrorを取得します:リストインデックスは整数でなければならず、dictではありません

「各プレイヤーのスコアの値が<=30の場合」とはどうすればよいですか?

書くだけでprint players[0]['score']20になります。書くprint players[1]['score']と30になりますが、forループに入れて、「i」を数字にできないのはなぜですか。

前もって感謝します!

4

3 に答える 3

3

最初の「for」はリスト「players」を反復処理するため、各要素は辞書です。

for player in players:
    if player['score'] <= 30:
        ...
于 2013-01-30T19:29:05.730 に答える
0

このループでは:

for i in players:
    if players[i]['score'] <= 30:
        ***code goes here***

iリストへのインデックスではなく、リストから返された辞書です。あなたが望むように見えるものは次のとおりです。

for i, player in enumerate(players):
    if player['score'] <= 30:
        ***code goes here***

あるいは:

for player in players:
    if player['score'] <= 30:
        ***code goes here***

後でインデックスが必要ない場合

于 2013-01-30T19:29:57.983 に答える
0

リストを反復処理すると、それぞれiがリストの要素になるため、 に置き換えplayers[i]ますi

于 2013-01-30T19:28:45.930 に答える