这是一个YAML文件。它包含从ticker到feature category的映射列表。在
以下是BANKNIFTY_O_C_0_10_W的映射:
index: [ BANKNIFTY_O_C_0_09_W: books,BANKNIFTY_O_C_0_09_W: trends,BANKNIFTY_O_C_0_09_W: trades,BANKNIFTY_O_C_0_09_W: relations,BANKNIFTY_O_P_0_09_W: books,BANKNIFTY_O_P_0_09_W: trends,BANKNIFTY_O_P_0_09_W: trades,BANKNIFTY_O_P_0_09_W: negrelations,BANKNIFTY_O_C_0_10_W: books,BANKNIFTY_O_C_0_10_W: trends,BANKNIFTY_O_C_0_10_W: trades,BANKNIFTY_O_C_0_10_W: relations,BANKNIFTY_O_C_0_10_W: options_banknifty_weekly,BANKNIFTY_O_P_0_10_W: books,BANKNIFTY_O_P_0_10_W: trends,BANKNIFTY_O_P_0_10_W: trades,BANKNIFTY_O_P_0_10_W: negrelations,BANKNIFTY_F_0: books,BANKNIFTY_F_0: trends,BANKNIFTY_F_0: trades,BANKNIFTY_F_0: relations,NIFTY_F_0: books,NIFTY_F_0: trends,NIFTY_F_0: trades,NIFTY_F_0: relations ]
我需要以下输出:
^{pr2}$
您的输入是一个单项映射,值是一个单项映射的列表。 输出是单个项映射的列表。那张单子是 以相同的方式排列原始映射的键。这表示应该使用列表或
OrderedDict
来收集这些信息这些映射的对应值是这些映射的键的原始值列表,也按它们出现的顺序排列,但至少在原始值中部分重复,而不是在目标中重复。由于顺序需要保留,因此不能使用
set
(它将自动过滤双倍数)。相反,可以使用列表,这需要检查列表中已经存在的项。但是在下面我使用了另一个OrderedDict
,由于不查看值而被滥用为“OrderedSet
”。在假定输入在文件
input.yaml
中:它给出了:
^{pr2}$yaml.default_flow_style=None
是必需的,因为默认情况下,YAML()
实例将使用块样式,而您的输出在叶节点上具有流样式。在ruamel.yaml
中,可以通过不生成“正常”的dict和列表,而是对内部用于保存往返信息的对象进行子类化,从而实现更精细的控制。在您的例子中,这是不必要的,因为您想要由.default_flow_style
(False
:所有块样式,True
:所有流样式,None
:流样式中有叶的块样式)控制的三种模式之一相关问题 更多 >
编程相关推荐