我对python和初学阶段都很陌生。我正在尝试创建一个循环,它在一个内部循环中使用条件语句进行迭代。这就是我想要实现的目标:
1)迭代在
之前定义的位置列表2)对于每个位置,使用第二个内部for循环遍历玩家词典中的每个玩家。
这是我的代码:
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)
答案 0 :(得分:1)
这里有一些问题:
loc
是locations
列表的元素,所以是一个字符串,不能在字符串上调用[""]
;和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)