我在yaml中有一个输入,包含不同级别的嵌套对象.我需要一个Python函数来判断所有的并获得所需的输出—字符串列表,其中每个字段被点分隔,如果嵌套—Object1.Object2.Object3.Object4...下面的例子.
我试图用递归函数来实现它.我的代码片段:
tests = []
test2 = {}
def test(config, parent=None):
previous_parent = None
names = []
for column in config:
if column.get("dtype") in ["array", "struct"]:
parent = column["name"]
print(f"parent: {parent}")
test(column["columns"], parent)
else:
value = column["name"]
print(f"value: {value}")
# names.append(value)
输出是:
value: PartitionDate
value: TransactionID
value: EventTimestamp
parent: ControlTransaction
value: StoreID
parent: RetailTransaction
value: StoreID
value: WorkstationID
...
输入:
columns:
- name: PartitionDate
- name: TransactionID
- name: EventTimestamp
- name: ControlTransaction
dtype: struct
columns:
- name: StoreID
- name: WorkstationID
- name: Transaction
dtype: struct
columns:
- name: TransactionID
- name: TransactionNumber
- name: ControlType
- name: RetailTransaction
dtype: struct
columns:
- name: StoreID
- name: WorkstationID
输出:
[
PartitionDate,
TransactionID,
EventTimestamp,
ControlTransaction.StoreID,
ControlTransaction.WorkstationID,
ControlTransaction.Transaction.TransactionID,
ControlTransaction.TransactionNumber,
ControlType,
RetailTransaction.StoreID,
RetailTransaction.WorkstationID
]