【发布时间】:2020-01-31 21:45:15
【问题描述】:
我目前正在开发一个可以检测用户游戏和时间的网站。在我的网络应用程序中,用户可以将游戏设置为已完成(已玩)。我成功地创建了一个字典列表和一个玩到最后的游戏。我认为一些代码说明会有所帮助。
这是我的代码,它应该生成两个单独的字典列表。 play_games_entries 确实有效。我尝试使用其他方法,但它不能按我的意图工作。我知道这个问题,但很难解释,我现在不知道我的方法应该是什么。老实说,我有点困惑,因为 if 语句有效,而 else 语句无效。
def get_name_and_due(request, played_games, games_list):
open_games_entries = []
played_games_entries = []
for game in games_list:
for played_game in played_games:
due_perc = convert_due_into_percentage(game['due'], request.session.get('max_due'))
if game['game_name'] == played_game['played_game_name']:
played_games_entries.append({'name': game['game_name'], 'due': due_perc})
break
else:
pass
这是我对参数played_games 和game_list 的值。
games_list = [
{'index': '1', 'game_name': 'Temtem', 'due': '00:30:04'},
{'index': '2', 'game_name': 'The Forest', 'due': '10:00:30'},
{'index': '3', 'game_name': 'The Witcher 3: Wild Hunt', 'due': '50:15:25'},
{'index': '4', 'game_name': 'STAR WARS Jedi: Fallen Order', 'due': '18:15:00'}
]
played_games = [
{'played_game_name': 'Grand Theft Auto: San Andreas'},
{'played_game_name': 'The Witcher 3: Wild Hunt'},
{'played_game_name': 'ONE PIECE: PIRATE WARRIORS 4'}
]
最后一个代码将是预期结果。并指出played_game_entries 确实有效
open_games_entries = [
{'index': '1', 'game_name': 'Temtem', 'due': '24.44'},
{'index': '2', 'game_name': 'The Forest', 'due': '10'},
{'index': '4', 'game_name': 'STAR WARS Jedi: Fallen Order', 'due': '20'}
]
played_games_entries = [
{'index': '3', 'game_name': 'The Witcher 3: Wild Hunt', 'due': '100'}
]
我整天都在努力自己修复它,但我失败了。我在互联网上查找问题,所以很多人建议设置。但没有考虑这种方法,因为它是基于列表的,而且我有一个字典列表。我真的很想看到一种带有 for 循环的方法,因为我真的认为这是可能的。
最好的问候
琳达
【问题讨论】:
-
您实际上是想查看两个词典的共同点吗?然后将其拆分为另外两个: 1 有什么共同点,而 2 有什么相反的?
标签: python django list for-loop if-statement