作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在开发一个可以检测用户游戏和时间的网站。在我的网络应用程序中,用户可以将游戏设置为完成(播放)。我成功地创建了一个字典列表和一个玩到最后的游戏。我认为一些代码说明会有所帮助。
这是我的代码,它应该生成两个单独的字典列表。 played_games_entries 确实有效。我用 else 尝试它,但它不按我的意图工作。我知道这个问题,但很难解释,我现在不知道我的方法应该是什么。老实说,我有点困惑,因为 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'}
]
我整天都在自己修复它,但我失败了。我在互联网和 SO 上查找问题,许多人建议设置。但是没有考虑这种方法,因为它是基于列表的,而我有一个字典列表。我真的很想看到一种带有 for 循环的方法,因为我真的认为这是可能的。
最好的问候
琳达
最佳答案
您可以使用 else
作为 for
的一部分(当 for 循环不间断地结束时,代码继续执行到 else):
...
for played_game in played_games:
...
else:
open_games_entries.append(...
在您的代码中:
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({'index': game['index'], 'game_name': game['game_name'], 'due': due_perc})
break
else:
open_games_entries.append({'index': game['index'], 'game_name': game['game_name'], 'due': due_perc})
关于python - 如何将字典列表拆分为 2 个单独的字典列表并进行相等性检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60011660/
我是一名优秀的程序员,十分优秀!