python列表和di

2024-04-26 17:59:17 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的监狱,男系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é'])

但现在我需要在迪克特监狱里搜查,把里面的俘虏填满。你知道吗

谢谢。你知道吗


Tags: ofiddedangernomlistdivision监狱
1条回答
网友
1楼 · 发布于 2024-04-26 17:59:17

我们的想法是,你把俘虏圈起来,把每个俘虏分配到一个安全系数等于或高于他们危险系数的监狱,然后为了降低成本,他们被分配到安全系数最低的监狱。你知道吗

# -*- 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岁的sécuritéM1监狱。而旺达·马克西莫夫和危险45号被分配到F1监狱和sécurité60号。你知道吗

相关问题 更多 >