python - 从嵌套列表中获取元组列表
问题描述
如何从嵌套的元组列表中获取元组?这是我尝试过的:
from itertools import chain
l = [[[('key1', b'val1', b'val1.2'),[('key2', b'val2'),('key3', b'val3'),('key4', b'val4')]]]]
l2 = list(chain.from_iterable(l)) # tried
print(l2)
[[('key1', b'val1', b'val1.2'), [('key2', b'val2'), ('key3', b'val3'), ('key4', b'val4')]]]
需要这样的输出:
[('key1', b'val1', b'val1.2'),('key2', b'val2'),('key3', b'val3'),('key4', b'val4')]
解决方案
试试这个递归生成器:
l = [[[('key1', b'val1', b'val1.2'),[('key2', b'val2'),('key3', b'val3'),('key4', b'val4')]]]]
def all_tuples(nested):
for item in nested:
if isinstance(item, list):
yield from all_tuples(item)
else:
assert isinstance(item, tuple)
yield item
print(list(all_tuples(l)))
# [('key1', b'val1', b'val1.2'), ('key2', b'val2'), ('key3', b'val3'), ('key4', b'val4')]
推荐阅读
- java - 如何确定一个 0-360 经度范围是否包含另一个
- java - 带有黄瓜的正则表达式与字符串不匹配
- c# - 第二次加载页面时覆盖 SelectListItem/Bound 属性
- java - Spring AOP中无法拦截advice方法
- python - Scrapy ValueError:网址不能为无
- regex - 使用 RegExp 删除特定字符串
- android - 仅在我的应用未运行时发送通知
- android - 使用 Dagger 在 Android 中清理架构
- android - 访问被拒绝“persist.vendor.camera.privapp.list”
- swift - SwiftUI 条件在视图的顶层不起作用