python - 展平字典进入一个综合列表
问题描述
所以我从服务器请求中得到了以下字典:
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)]
感谢您的任何意见。
解决方案
你可以这样做:
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
函数将处理任意嵌套列表。
推荐阅读
- postgresql - postgresql:.pgpass 在 Windows / cygwin 上不起作用
- dataframe - 测试抽样中最后一个值的含义
- javascript - 角度输出装饰器不工作给出错误
- java - 在一个函数调用 Mockito 中同一类的另一个函数的类中创建测试用例的好做法是什么?
- javascript - 如何在javascript中根据日期显示数组
- xml - 我们如何在 XSD 中定义任何函数或任何逻辑是可能的?需要在 XSD 中验证 XML 文件的可能性
- batch-file - windows根据条件将文件批量拆分为两个
- javascript - 为 arcgis javascript 插入“esri/dijit/analysis/AggregatePoints”或相关 esri 数字小部件功能所需的理解
- html - 导航栏下拉菜单不展开
- node.js - 什么是用于创建用户的好模式?