4

それ以外の

key:
    - thisvalue
    - thatvalue
    - anothervalue

私はを頂きたい

key:
    1. thisvalue
    2. thatvalue
    3. anothervalue

と同じ解釈で、純粋に人間が読みやすくするためです{key: [thisvalue, thatvalue, anothervalue]}

これは基本的なYAML 構文の一部ではないようですが、これを達成する方法はありますか?

(これは、リストを次のように書くことで近似できることを認識しています。

key:
    - 1. thisvalue
    - 2. thatvalue
    - 3. anothervalue

しかし、これは醜いハックであり、解析して削除する必要がある値のテキストの一部ではなく、数値が意味的な目的を持つソリューションを好む.)

4

2 に答える 2

3

YAML でそれを行う方法はありません。ただし、要素の通常のネストを使用して、解析中にそれらに基づいて配列/リスト/辞書を生成できます。

my_numbered_pseudo_list:
  1: a
  2: b
  3: c
  ...
  n: x

上記の例をロードすると、キー "my_numbered_pseudo_list" とその値を持つディクショナリが、すべてのネストされたペアを含むディクショナリとして取得されます{"1" : "a", "2" : "b", ..., "n" : "x"}。以下に例を示します。

import yaml

doc = '''
list:
  1: a
  2: b
  3: c
  4: d
'''

y = yaml.load(doc);
list = []

for i in y['list']:
    list.append(y['list'].get(i))

print list

これにより、

['a', 'b', 'c', 'd']

順序が実際に YAML ファイルに保持されていることを確認したい場合は、YAML ファイルに記述されている順序が保持されている順序付き最終リストを取得するために、ソートを行う必要があります。

結果の辞書 (ここでは「リスト」) (私がよく知らない Ruby など) で順序付けられたハッシュ呼び出しを使用する人も見たので、もう少し掘り下げたいと思うかもしれません。

重要!

ここここを読んでください。つまり、YAML から実際に順序付けされたリストを確実に取得するには、疑似リストとして持っている辞書をキーでソートし、値を抽出して最終的なリストに追加する必要があります。

于 2015-08-02T19:18:20.840 に答える