为了账号安全,请及时绑定邮箱和手机立即绑定

python列表和字典

python列表和字典

MM们 2021-09-11 15:37:16
这是我的监狱,M代表男科,F代表女科:prison = {'M': {1: {'prisonniers': [], 'sécurité': 90}, 2: {'prisonniers': [], 'sécurité': 55}, 3: {'prisonniers': [], 'sécurité': 17}}, 'F': {1: {'prisonniers': [1], 'sécurité': 60}, 2: {'prisonniers': [], 'sécurité': 36}}, 'taille': 6}我有另一个 txt 文件,里面有这样的俘虏:{'F': [{'nom': 'Wanda Maximoff', 'crimes': ['A conspiré avec Ultron', 'A agressé Vision', "A détruit l'aéroport de Vienne"], 'univers': 'Marvel', 'ID': 501988, 'danger': 45}], 'M': [{'nom': 'Le Joker', 'crimes': ['Meurtre', 'Braquage de banques', 'Mauvaises blagues'], 'univers': 'DC', 'ID': 48235, 'danger': 87}]现在我需要把这些俘虏关进我的监狱,但我需要尊重该部门的安全级别必须高于或等于危险级别所以我试着一个一个抓俘虏,验证他们可以去哪个师,我把所有的师都列了一个清单list_of_division = [{'prisonniers': [], 'sécurité': '47'}, {'prisonniers': [], 'sécurité': '92'}, {'prisonniers': [], 'sécurité': '38'}]然后我取了最低值:value = min(list_of_division, key= lambda elem: elem['sécurité'])但是现在我需要在dict监狱里面搜索并填写里面的俘虏。
查看完整描述

1 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

这个想法是,你遍历俘虏并将每个人分配到一个安全性等于或高于他们的危险的监狱,然后为了降低成本,他们被分配到安全性最低的监狱。


# -*- coding: utf-8 -*-


prisons = {'M': {1: {'prisonniers': [], 'sécurité': 90}, 2: {'prisonniers': [], 'sécurité': 55}, 3: {'prisonniers': [], 'sécurité': 17}}, 'F': {1: {'prisonniers': [], 'sécurité': 60}, 2: {'prisonniers': [], 'sécurité': 36}}, 'taille': 6}

captives = {'F': [{'nom': 'Wanda Maximoff', 'crimes': ['A conspiré avec Ultron', 'A agressé Vision', "A détruit l'aéroport de Vienne"], 'univers': 'Marvel', 'ID': 501988, 'danger': 45}], 'M': [{'nom': 'Le Joker', 'crimes': ['Meurtre', 'Braquage de banques', 'Mauvaises blagues'], 'univers': 'DC', 'ID': 48235, 'danger': 87}]}


for gender, captives in captives.items():

    for captive in captives:

        jails = filter(lambda elem: elem['sécurité'] >= captive['danger'], 

                       prisons[gender].values())

        if not jails:

            print("No prison can hold:", captive['nom'])

            continue


        jail = min(jails, key=lambda elem: elem['sécurité'])

        jail['prisonniers'].append(captive)


print(prisons)

印刷:


{'taille': 6, 'M': {1: {'prisonniers': [{'univers': 'DC', 'nom': 'Le Joker', 'crimes': ['Meurtre', 'Braquage de banques', 'Mauvaises blagues'], 'ID': 48235, 'danger': 87}], 'sécurité': 90}, 2: {'prisonniers': [], 'sécurité': 55}, 3: {'prisonniers': [], 'sécurité': 17}}, 'F': {1: {'prisonniers': [{'univers': 'Marvel', 'nom': 'Wanda Maximoff', 'crimes': ['A conspiré avec Ultron', 'A agressé Vision', "A détruit l'aéroport de Vienne"], 'ID': 501988, 'danger': 45}], 'sécurité': 60}, 2: {'prisonniers': [], 'sécurité': 36}}}

那就是危险87的小丑被分配到安全90的M1监狱。 危险45的万达马克西莫夫被分配到安全60的F1监狱。


查看完整回答
反对 回复 2021-09-11
  • 1 回答
  • 0 关注
  • 149 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信