进入一个综合列表,python,python-3.x"/>

首页 > 解决方案 > 展平字典进入一个综合列表

问题描述

所以我从服务器请求中得到了以下字典:

dict = {"first": "Mark", "last": "Zuckerberg", "alternative": ["Zuck", "Facebook guy"]}

我希望将其转换为这样的列表:

result = ["Mark", "Zuckerberg", "Zuck", "Facebook guy"]

我想我真的想保持它是pythonic以获得个人满意度。我去过的最接近的是这个,你可以说它只给了我嵌套列表,而不是我真正想要的。

values = list(dict.values())
result = [item for sublist in values for item in sublist if isinstance(sublist, list)]

感谢您的任何意见。

标签: pythonpython-3.x

解决方案


你可以这样做:

def flatten(s):
    for e in s:
        if isinstance(e, (tuple, list)):
            yield from flatten(e)
        else:
            yield e


d = {"first": "Mark", "last": "Zuckerberg", "alternative": ["Zuck", "Facebook guy"]}

result = list(flatten(d.values()))

print(result)

输出

['Mark', 'Zuckerberg', 'Zuck', 'Facebook guy']

flatten函数将处理任意嵌套列表。


推荐阅读