python - 将字典 <str, list> 展平为综合列表

标签 python python-3.x

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

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

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

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

我想我真的是为了个人的满足而努力让它保持 Python 风格。我去过的最接近的是这个,你可以告诉我它只给我嵌套列表而不是我真正要找的东西。

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

感谢任何输入。

最佳答案

你可以这样做:

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 函数将处理任意嵌套列表。

关于python - 将字典 <str, list> 展平为综合列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58172798/

相关文章:

python - 如何在python中删除图像的背景

python - 列表中的动态变量

python - PackageNotInstalledError : Package is not installed in prefix

python-3.x - 如何摆脱密码编译错误?

python - 为什么 Python 会默默地转换为 0.0?

python - 使用 map(function, list) 来转换对象而不返回列表是否合适?

python - Airflow - 处理 DAG 回调的正确方法

python - 当用户通过身份验证时运行 Django QuerySet

python - 有没有办法找到矩阵中不同值的概率

python - 调整 Canvas /框架大小时如何防止窗口闪烁?