代码之家  ›  专栏  ›  技术社区  ›  Yorick Robinson

如何从嵌套列表或字典理解中返回我期望的内容?

  •  0
  • Yorick Robinson  · 技术社区  · 2 年前

    这是一个嵌套列表理解,我希望返回一个元组列表,每个元组包含2个项目。

    table_info = [[(tag['Value'], table['RouteTableId']) for tag in table['Tags'] if tag['Key'] == "Name"] for table in tables]

    我得到的是一个元组列表,每个元组包含一个包含两个变量的项。

    table_info = {{tag['Value']: table['RouteTableId'] for tag in table['Tags'] if tag['Key'] == "Name"} for table in tables}

    相反,我收到了这个错误:TypeError:unhable类型:“dict”,这实际上意味着我试图使用这两个值作为键。

    在这两种情况下,理解似乎都是将两个变量分组为一个项目,而不是两个单独的项目,但我不理解为什么。非常感谢您的帮助。

    1 回复  |  直到 2 年前
        1
  •  3
  •   Samwise    2 年前

    [[]] ).

    要解决这个问题并获得您想要的单个列表,请使用嵌套生成器创建单个列表理解:

    table_info = [
        (tag['Value'], table['RouteTableId'])
        for table in tables
        for tag in table['Tags']
        if tag['Key'] == "Name"
    ]
    

    []

    两个 for 环路构造:

    table_info = []
    for table in tables:
        for tag in table['Tags']:
            if tag['Key'] == "Name":
                table_info.append((tag['Value'], table['RouteTableId']))