値の1つとしてリストを含む辞書があります。キーと値に別々にアクセスしたい。リストの要素にも個別にアクセスしたい。
私が持っている最終的な答えを使用して決定木をプロットしようとしています。そのためには、各要素に個別にアクセスする必要があります。私が持っている最終的な答えは以下のとおりです。誰かが私が各値に別々にアクセスする方法を手伝ってもらえますか?
tree = {
"petal_width <= 0.8": [
"Iris-setosa",
{
"petal_width <= 1.75": [
{
"petal_length <= 4.95": [
{
"petal_width <= 1.65": [
"Iris-versicolor",
"Iris-virginica"
]
},
{
"petal_width <= 1.55": [
"Iris-virginica",
{
"petal_length <= 5.45": [
"Iris-versicolor",
"Iris-virginica"
]
}
]
}
]
},
{
"petal_length <= 4.85": [
{
"sepal_width <= 3.1": [
"Iris-virginica",
"Iris-versicolor"
]
},
"Iris-virginica"
]
}
]
}
]
}
要素にアクセスした後、次の形式で決定木をプロットしたいと思います。
あなたの例では、多層辞書があります。ここで、
キーは文字列です
値は次のとおりです。
タプルと辞書を解析するための個別の再帰関数を使用して、このコードを試してください。私は、関数を作成しmy_action
てprint
いますが、あなたが好きでそれを置き換えることができます。ご覧のとおり、関数ではキーも取得します。
def parse_tuple(t):
tuplen = len(t)
for i in range(tuplen):
v = t[i]
if isinstance(v, tuple):
parse_tuple(v)
elif isinstance(v, dict):
parse_dictionary(v)
elif isinstance(v, str):
my_action(v)
else:
print(v.dtype+" is not taken into account !")
def parse_dictionary(d):
for k in d:
my_action(k)
v = d[k]
if isinstance(v, list):
parse_dictionary(d[k])
#elif isinstance(v, list):
# parse_list(v)
elif isinstance(v, tuple):
parse_tuple(v)
elif isinstance(v, str):
my_action(v)
def my_action(x):
print(x)
parse_dictionary(tree)
入力すると、次の結果が得られます。
petal_width <= 0.8
Iris-setosa
petal_width <= 1.75
petal_length <= 4.95
petal_width <= 1.65
Iris-versicolor
Iris-virginica
petal_width <= 1.55
Iris-virginica
petal_length <= 5.45
Iris-versicolor
Iris-virginica
petal_length <= 4.85
sepal_width <= 3.1
Iris-virginica
Iris-versicolor
Iris-virginica
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加