python - Python 从数组的可变长度字典创建数组的 zip 元组
问题描述
标题可能过于复杂。
我正在尝试做的是以下内容:
给定一个数组字典
h = {'full':[10, 8, 6, 4, 2],'train':[12, 10, 8, 6, 4],'test':[8,6,4,2, 0]}
我想获取数组的所有元素的元组,其中第一个元素取自第一个数组的第一个元素,第二个取自第二个数组的第一个元素,第三个取自第三个的第一个元素数组,第四个是第一个数组的第二个元素,依此类推,直到用尽。
如果我知道数组的数量总是 3,我可以这样做:
sets = list(h.keys())
t = sum( zip( h[sets[0], h[sets[1]], h[sets[2]] ), () )
这产生(10, 12, 8, 8, 10, 6, 6, 8, 4, 4, 6, 2, 2, 4, 0)
.
不知道我尝试过的字典中有多少键:
t = sum( zip( [ h[k] for k in h.keys() ] ), () )
但这会产生:
([10, 8, 6, 4, 2], [12, 10, 8, 6, 4], [8, 6, 4, 2, 0])
关于如何使用可变长度字典获得上述结果的任何想法?
解决方案
您可以将未包装的带拉链的三胞胎从以下位置展平zip(*h.values())
:
>>> h = {'full':[10, 8, 6, 4, 2],'train':[12, 10, 8, 6, 4],'test':[8,6,4,2, 0]}
>>> tuple(zip(*h.values()))
((10, 12, 8), (8, 10, 6), (6, 8, 4), (4, 6, 2), (2, 4, 0))
>>> tuple(x for y in zip(*h.values()) for x in y)
(10, 12, 8, 8, 10, 6, 6, 8, 4, 4, 6, 2, 2, 4, 0)
推荐阅读
- mule - 处理 mule 中的重复 xml 元素
- javascript - 选定的属性不起作用
- python - 用文本文件中的 n + 字符串替换每第 n 次出现的字符串
- amazon-web-services - 您可以“cd”到 AWS S3 存储桶并在那里运行 powershell 脚本吗
- r - 网络分析 - networkD3 - 如何放置权重
- javascript - 使用 svg.js 加载 SVG 文件
- ios - swift 我想检查警报文本字段文本是否大于 0
- angular - Angular - 基于前缀重定向但删除剩余的不匹配路径
- go - 去找不到未编组的 XML 节点
- bash - 逐行获取grep结果并从每一行中提取一个单词