python - 通过理解简化嵌套的 for 循环

标签 python dictionary list-comprehension dictionary-comprehension

我正在尝试通过字典简化嵌套 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']
    }
}

这是四行代码:

rooms = []
for resort in otas.values():
    for room in resort.values():
        rooms += [r for r in room if r not in rooms]

我知道我目前的做法没有任何错误。我很好奇是否可以做到。

最佳答案

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

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

如果您想要返回一个列表,只需将其包装在对 list 的调用中即可。

关于python - 通过理解简化嵌套的 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29438530/

相关文章:

python - 不在列表中 - 列表理解

python - 如何检查字符串是否表示 float

python - 获取python中类的类路径或 namespace ,即使它是嵌套的

python - 为什么删除方法不释放 Tkinter 中小部件的内存?

java - 榛卡斯特 map : remove entries owned by the node that goes down

javascript - 如何使用 javascript es6/2015 中已解析对象的唯一键创建 map ?

python - 如何从列表理解中的单行中提取两个元组?

Python Pandas 在 X 上线性插值 Y

python - 如何将不同长度的列表字典写入 csv?

python-3.x - Pandas:检查一列是否存在于另一列中