У меня есть файл Yaml ниже
Tests:
- Test:
test_name: Test_Name1
test_id: 1
test_desc: Test Name1
- Test:
test_name: Test_Name2
test_id: 2
test_desc: Test Name2
- Test:
test_name: Test_Name1
test_id: 3
test_desc: Test Name3
Мне нужно поднять предупреждение, если какое-либо из test_name имеет повторяющееся значение. Например, в приведенном выше случае, поскольку Test_Name1 повторяется, это вызовет предупреждение. test_name и test_id должны иметь уникальные значения в файле. Я попытался преобразовать yaml в словарь, а затем обнаружил повторяющееся значение, это показывает ошибку как TypeError: unhashable type: 'list'.
Ниже мой код
import yaml
mapping = {}
stream = open('C:/modelsData/work/tests.yaml', 'r')
data = yaml.load(stream)
for key in data:
mapping.setdefault(data[key], set()).add(key)
print(mapping)
result = filter(lambda x: len(x)>1, mapping.values())
print("Duplicated Values ", list(result))
Обратите внимание - я не могу удалить «-» из файла yaml. По сути, я не могу ничего изменить в файле, это нужно сделать с помощью кода. :)