YAML. Complex Structure
The 4th task in the series of missions about the YAML format will be devoted to a complex structure.
| YAML | Python/TypeScript |
|---|---|
|
A list element can be another list. |
|
- Alex
-
- odessa
- dnipro
- Li
|
[
"Alex",
[
"odessa",
"dnipro"
],
"Li"
]
|
|
A dictionary can also be an element of an list. |
|
- 67
-
name: Irv
game: Mario
-
- 56
|
[
67,
{
"game": "Mario",
"name": "Irv"
},
None/null,
56
]
|
|
A dictionary element can be another dictionary. |
|
name: Alex
study:
type: school
number: 78
age: 14
|
{
"age": 14,
"study": {
"type": "school",
"number": 78
},
"name": "Alex"
}
|
|
A list can also be an element of dictionary. |
|
name: Alex
study:
- 89
- 89
- "Hell"
age: 14
|
{
"age": 14,
"study": [
89,
89,
"Hell"
],
"name": "Alex"
}
|
|
And, of course, data can have more than one nesting level. |
|
name: Alex
study:
-
type: school
num: 89
-
type: school
num: 12
age: 14
|
{
"age": 14,
"study": [
{
"num": 89,
"type": "school"
},
{
"num": 12,
"type": "school"
}
],
"name": "Alex"
}
|
Input: Format string.
Output: An object (list/dictionary).
Examples:
assert yaml("- Alex\n-\n - odessa\n - dnipro\n- Li") == [
"Alex",
["odessa", "dnipro"],
"Li",
]
assert yaml("- 67\n-\n name: Irv\n game: Mario\n-\n- 56") == [
67,
{"game": "Mario", "name": "Irv"},
None,
56,
]
assert yaml("name: Alex\nstudy:\n type: school\n number: 78\nage: 14") == {
"age": 14,
"study": {"type": "school", "number": 78},
"name": "Alex",
}
assert yaml('name: Alex\nstudy:\n - 89\n - 89\n - "Hell"\nage: 14') == {
"age": 14,
"study": [89, 89, "Hell"],
"name": "Alex",
}
Precondition: The YAML 1.2 standard is being used.