LINUX.ORG.RU

[YAML]Ассоциативный список в ассоциативном списке в YAML'е.

 


0

1

Как в YAML'е написать документ соответствующий такому ассоциативному списку в python'е:

{simpsons:{homer:"husband", marge:"wife", bart:"child"},futurama:{farnworth:"scientist", leela:"mutant", kif:"alien"}}

Что-то я не фирштейн.

★★★★★

как то так, не?

simpsons:
    homer     : husband
    marge     : wife
    bart      : child
futurama:
    farnworth : scientist
    leela     : mutant
    kif       : alien
shty ★★★★★
()
Ответ на: комментарий от shty

Так ли?

Меня смущает, что вот такой вот код

#!/usr/bin/python

import yaml

document = """
simpsons:
    homer     : husband
    marge     : wife
    bart      : child
futurama:
    farnworth : scientist
    leela     : mutant
    kif       : alien
"""
print yaml.dump(yaml.load(document))
выдаёт
futurama: {farnworth: scientist, kif: alien, leela: mutant}
simpsons: {bart: child, homer: husband, marge: wife}
, а не
{futurama: {farnworth: scientist, kif: alien, leela: mutant}, simpsons: {bart: child, homer: husband, marge: wife}}

Camel ★★★★★
() автор топика
Ответ на: Так ли? от Camel

всё правильно выдаёт :) а если так?

- simpsons:
    homer     : husband
    marge     : wife
    bart      : child
- futurama:
    farnworth : scientist
    leela     : mutant
    kif       : alien
shty ★★★★★
()
Ответ на: Выхлоп. от Camel

хм, зайдём с другой стороны :)

{
    simpsons:
        homer     : husband
        marge     : wife
        bart      : child

    futurama:
        farnworth : scientist
        leela     : mutant
        kif       : alien
}

а так?

shty ★★★★★
()
Ответ на: комментарий от shty

Ошибка.

Ошибку выдаёт. Этого, впрочем, стоило ожидать, потому что inline associative array делается по-другому.

Camel ★★★★★
() автор топика
Ответ на: Ошибка. от Camel

Этого, впрочем, стоило ожидать, потому что inline associative array делается по-другому.

по идее YAML - это тоже JSON (пруф), так что могло прокатить :)

сорри, сейчас некогда ковырять стандарт - проклятые рудники (читай: работа :))

попробуйте здесь посмотреть

если что готов вечером продолжить :)

shty ★★★★★
()
Ответ на: комментарий от iSage

Не так.

'-':
  futurama: {farnworth: scientist, kif: alien, leela: mutant}
  simpsons: {bart: child, homer: husband, marge: wife}

Что-то я начинаю склоняться к первому варианту shty. Хотя отсутствие фигурных скобок вокруг выхлопа намекает, что это два ассоциативных массива, а не один.

Camel ★★★★★
() автор топика

ещё мысль в голову пришла

.simpsons:
    homer     : husband
    marge     : wife
    bart      : child
futurama:
    farnworth : scientist
    leela     : mutant
    kif       : alien

а так?

shty ★★★★★
()
Ответ на: комментарий от shty

и да, н ахудой конец так можно:

all:

    simpsons:
        homer     : husband
        marge     : wife
        bart      : child

    futurama:
        farnworth : scientist
        leela     : mutant
        kif       : alien

это вариант самый простой, не знаю правда насколько это эквивалентно исходной задаче

shty ★★★★★
()
#!/usr/bin/python

import yaml

document = """
    - simpsons:
        homer: husband
        marge: wife
        bart: child
    - futurama:
        farnworth: scientist
        leela: mutant
        kif: alien
"""
print yaml.load(document)
./test.py
[{'simpsons': {'homer': 'husband', 'marge': 'wife', 'bart': 'child'}}, {'futurama': {'farnworth': 'scientist', 'kif': 'alien', 'leela': 'mutant'}}]
iSage ★★★★
()
Ответ на: комментарий от iSage

Не то.

Это список из двух ассоциативных массивов, а я хочу ассоциативный массив из двух пар ключ-значение.

Сделаю как shty в предыдущем сообщении написал.

Camel ★★★★★
() автор топика
Ответ на: комментарий от shty

Эврика.

Ура! Нашёл:

#!/usr/bin/python

import yaml

document = """
---

    simpsons:
        homer     : husband
        marge     : wife
        bart      : child

    futurama:
        farnworth : scientist
        leela     : mutant
        kif       : alien
"""
print yaml.load(document)

Camel ★★★★★
() автор топика
Ответ на: комментарий от qnikst

ну пункт 2.2 http://www.yaml.org/spec/1.2/spec.html

если Вы посмотрите на сообщения в треде внимательно, то увидите что я приводил ссылку на пункт 2.2, и в том документе оно там так написано, что вот нифига не понятно

скажу более, вот эта фраза

YAML uses three dashes (“---”) to separate directives from document content.

мне представляется несколько туманной относительно решения текущей задачи, то есть я бы не догадался

shty ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.