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

2024-06-13 08:45:40 发布

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

这是我用三个键写的辞典。你知道吗

({'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,如果事件的结尾(可以说的每个索引的最后一个in)高于甚至高于参数day_year,我们可以将此事件的名称添加到事件列表中,因为它在当天可用。我要把事件清单还给你。你知道吗

所以如果我进去

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

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

我尝试了什么:

我实际上很熟悉python中的循环和其他东西,但是我不断地得到关于元组的代码错误和一些dictionary中不允许的操作。你知道吗

有人告诉我,我可以为每种类型创建一个列表,但我仍然有时间到达每个事件和参数中所要求的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'

Tags: in列表参数type事件deelementla
1条回答
网友
1楼 · 发布于 2024-06-13 08:45:40

你可以这样使用列表理解:

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...']

相关问题 更多 >