简化嵌套的循环(使用简明语法)

2024-09-27 04:27:18 发布

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

我试图通过字典简化嵌套的for循环,以构建一个唯一值列表(嵌套字典值中列出的房间大小)。我已经将代码缩减为4行,但我很好奇是否可以通过列表理解将其缩减为1行。在

这是一个python字典示例:

otas = {
    Orbitz: {
        u'Las Vegas': [u'1 Bedroom Suite B-side']
    },
    Expedia: {
        u'Los Angeles': [u'2 Bedroom Lockoff', u'1 Bedroom Deluxe (A-side)', u'3 Bedroom Deluxe']
    },
    Priceline: {
        u'New York': [u'1 Bedroom Deluxe (A-side)']
    },
    Travelocity: {
        u'Chicago': [u'1 Bedroom Deluxe (A-side)', u'2 Bedroom Lockoff']
    }
}

这是四行代码:

^{pr2}$

我知道我目前的做法没有什么错。我最想知道的是这能不能做到。在


Tags: 代码示例列表for字典sidelassuite
3条回答

你可以试试这个

rooms = list(set(reduce(lambda x, y: x+y, [item for x in otas.values() for item in x.values()])))

我想你可以使用三重“嵌套”集合理解。在

rooms = {roomtype
         for service  in otas
         for location in otas[service]
         for roomtype in otas[service][location]}

如果您想要一个列表,只需在调用list中包装它。在

如果你不想在在线旅行社的房间里重复的话:

rooms = set([r for resort in otas.values() for room in resort.values() for r in room])

相关问题 更多 >

    热门问题