在python

时间:2017-07-04 15:14:07

标签: python

我对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)

1 个答案:

答案 0 :(得分:1)

这里有一些问题:

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