python列表和字典

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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é'])

但现在我需要在dict监狱内搜索并填写其中的俘虏。

谢谢。

答案

这个想法是你绕过俘虏并将每个囚犯分配到一个等于或高于其危险的监狱的监狱,然后为了降低成本,他们被分配到拥有最少安全保障的监狱。

# -*- 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}}}

这是带有危险的Le Joker 87被分配到M1监狱的sécurité90。而带有危险​​45的Wanda Maximoff被分配到了具有sécurité60的F1监狱。

以上是关于python列表和字典的主要内容,如果未能解决你的问题,请参考以下文章

Python代码阅读(第26篇):将列表映射成字典

Python snippet(代码片段)

Python代码阅读(第19篇):合并多个字典

Python:参考、字典和列表

带有列表的 Python 字典,如何在节俭的存根代码中描述它?

附加到 Python 字典中的列表 [重复]