Dictionnary返回在函数的参数中输入的键的列表

时间:2018-10-20 02:41:50

标签: python loops dictionary

这是我的字典中带有3个键的样本。

({'Musique': [['Musique', 'Shawn Phillips', 236, 236], ['Musique', "L'avenue Royale fête l'été!", 237, 237], ['Musique', 'Perséides musicales', 215, 215], ['Musique', 'Gaétan Leclerc chante Félix et…', 229, 229], ['Musique', 'The Ring of Fire : a Johnny Cash Experience', 202, 202], ['Musique', "Jazz'Art", 208, 210],  {'Théatre': [['Théâtre', 'Coup de théâtre à la joyeuse maison hantée', 189, 189], ['Théâtre', 'Les galoches du bonheur', 203, 203], ['Théâtre', 'Le voyage de Pixelle dans le monde virtuel', 217, 217], ['Théâtre', 'Marimba à la ferme de la bonne entente', 224, 224], ['Théâtre', 'Pattes et cravates', 196, 196], {'Danse': [['Danse', 'Initiation au tango argentin suivi de la milonga', 182, 231], ['Danse', 'Samedi de danser...', 188, 188], ['Danse', 'Rusdell Nunez (latino)', 191, 191]

键为:'Musique','Théâtre' and 'Danse

这是事件子列表的列表,我的词典中的所有int都是这些事件可用时。我需要返回一个列表,列出所有在参数day_year输入日期提供的正确类型的事件。

这里是完整的说明和功能:

def obtain_events_date_type(dictio_events_par_type, day_year, type_event): #first argument in the dictionnary so dont rly worry about it.

然后,对于类型正确的每个事件作为参数type_event,如果事件的开始(字典中的第一个int小于或甚至小于int,并且事件的结束(您可以说出的每个索引的最后一个)甚至比参数day_year更高,甚至可以将事件的名称添加到事件列表中,因为它在这一天就可用了。我需要返回该列表事件。

所以,如果我输入

def obtain_events_date_type(creer_dictio, 236, 'Musique'):    
     #creer_dictio is my dictio in another function

我需要添加第236天可用的所有事件,例如本文中提到的词典中的第一个值。同一天可能发生1个以上的事件。如果在输入参数的当天没有可用的事件,我们将返回一个空列表。

我尝试了什么:

我实际上熟悉python中的循环和东西,但我不断收到有关元组和字典上不允许的操作的代码错误。

有人告诉我,我可以为每种类型创建一个列表,但是我仍然有时间了解每个事件并在参数中询问int。

感谢信息/提示!

编辑:

liste_type_asked = []
for element in dictio_evenements_par_type:
    if 'Musique' in element:
        for jour in element:
            if jour_annee <= jour[2]:
                if jour_annee >= jour[3]:
                    liste_type_asked.append(element)    
return liste_type_asked

错误:

TypeError: '<=' not supported between instances of 'int' and 'str'

1 个答案:

答案 0 :(得分:0)

您可以像这样使用列表理解:

def obtain_events_date_type(dictio_events_par_type, day_year, type_event):
    return [n for t in dictio_events_par_type for k, l in t.items() if k == type_event for _, n, s, e in l if s <= day_year <= e]

这样:

events = [
    {
        'Musique': [
            ['Musique', 'Shawn Phillips', 236, 236],
            ['Musique', "L'avenue Royale fête l'été!", 237, 237],
            ['Musique', 'Perséides musicales', 215, 215],
            ['Musique', 'Gaétan Leclerc chante Félix et…', 229, 229],
            ['Musique', 'The Ring of Fire : a Johnny Cash Experience', 202, 202],
            ['Musique', "Jazz'Art", 208, 210]
        ]
    },
    {
        'Théâtre': [
            ['Théâtre', 'Coup de théâtre à la joyeuse maison hantée', 189, 189],
            ['Théâtre', 'Les galoches du bonheur', 203, 203],
            ['Théâtre', 'Le voyage de Pixelle dans le monde virtuel', 217, 217],
            ['Théâtre', 'Marimba à la ferme de la bonne entente', 224, 224],
            ['Théâtre', 'Pattes et cravates', 196, 196]
        ]
    },
    {
        'Danse': [
            ['Danse', 'Initiation au tango argentin suivi de la milonga', 182, 231],
            ['Danse', 'Samedi de danser...', 188, 188],
            ['Danse', 'Rusdell Nunez (latino)', 191, 191]
        ]
    }
]
print(obtain_events_date_type(events, 188, 'Danse'))

将输出:

['Initiation au tango argentin suivi de la milonga', 'Samedi de danser...']