基本上我有一个列表列表,如下所示,它应该遵循类似的模式
[[ID,值1,值2,值3]]
[[105, 'A', 'B'],
[102, 'B', 'C'],
[111, 'A', 'B', 'C'],
[106, 'B'],
[100, 'A', 'C']]
我想要达到这样的结果
[[105, 'A', 'B', 'null'],
[102, 'null','B', 'C'],
[111, 'A', 'B', 'C'],
[106, 'null','B','null'],
[100, 'A','null', 'C']]
这就像我有一个列表必须遵循的模式,如果特定值不可用,则应将其替换为 null。我可以使用条件语句编写代码,但它不是可扩展的选项。我正在尝试处理一些包,例如 schema 0.5.0 和 marshmallow,它们仅用于验证特定列表或字典是否可以遵循模式(T/F)。但如果找不到值,我会尝试替换它们。
最佳答案
尝试以下操作。本质上将每个列表映射到具有值或 None 的新列表。
alist = [[105, 'A', 'B'],
[102, 'B', 'C'],
[111, 'A', 'B', 'C'],
[106, 'B'],
[100, 'A', 'C']]
alist = map(lambda x: [x[0] ,
"A" if "A" in x else "None",
"B" if "B" in x else "None",
"C" if "C" in x else "None"], alist)
或者:您可以只拥有列表应具有的值列表,然后映射该列表。
values = ["A","B", "C", "D"]
alist = list(map(lambda x: [x[0]] + #ID
list(map(lambda y: y if y in x else "None", values)), alist))
关于python - 验证架构并将其应用于 python 中的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37081452/