python中的嵌套if循环迭代

2024-06-10 00:47:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python还比较陌生,还处于初级阶段。我试图创建一个循环,在一个内部循环中使用条件陈述。这里是我想要完成的:

1)遍历之前定义的位置列表

2)对于每个位置,使用第二个内部For循环遍历players字典中的每个player。你知道吗

这是我的密码:

locations = ['reddit.com', 'amazon.com', 'twitter.com', 'linkedin.com', 'ebay.com', 'netflix.com', 'google.com', 'stackoverflow.com', 'github.com', 'quora.com']

players = {1: {'player_name': 'cynthia', 'time_played': 30.9, 'player_pokemon': {}, 'gyms_visited': []}, 2: {'player_name': 'teri', 'time_played': 22.2, 'player_pokemon': {}, 'gyms_visited': ['alcatraz', 'pacific_beach']}}


for loc in locations:
   for player in players.keys(): 
    if player["gyms_visited"] != loc[""]:
        print (loc, player)

Tags: nameincomfortimelocplayerplayers
1条回答
网友
1楼 · 发布于 2024-06-10 00:47:53

这里有一些问题:

  • loclocations列表的元素,因此字符串,不能对字符串调用[""];并且
  • player是字典集中的元素。所以它不包含"gyms_visited"列表。你知道吗

您应该迭代字典的.values(),并省略loc上的[""]访问:

for loc in locations:
   for player in players.values():
    if player["gyms_visited"] != loc: # no [""]
        print (loc, player)

如果要打印播放器键而不是字典,可以迭代字典的.items()

for loc in locations:
   for player_id,player in players.items():
    if player["gyms_visited"] != loc:
        print (loc, player_id)

现在玩家的gyms_visited就是一个列表。列表永远不等于字符串。所以这永远不会发生。但是,如果查看loc是否在gyms_visited列表中,则可以使用:

for loc in locations:
   for player_id,player in players.items():
    if loc in player["gyms_visited"]:
        print (loc, player_id)

相关问题 更多 >