私は誰かがScalaで基本的なコードヘルプを私に提供できることを期待していました。私はPythonでいくつかのデモコードを書いた。Scala:再帰的に要素/リストのリストを変更する
要素が整数または他の要素のリストのいずれかを保持できる要素のリストを考えてみましょう。私はこの構造を再帰的に調べて全体の構造を維持しながら変更したいと思います。
これをPythonで表現するために、私は各要素を1つのキー(アイテムの場合は「i」)を持つ辞書にしました。そのキーに対応する値は、intまたは同様のdictのリストです。したがって、
lst = [{'i': 1}, {'i': 2}, {'i': [{'i': 5}, {'i': 6}]}, {'i': 3}]
def recurse(x):
if isinstance(x, list):
return [recurse(a) for a in x]
else:
if isinstance(x['i'], list):
return dict(i=[recurse(a) for a in x['i']])
else:
return dict(i=(x['i'] + 1))
print "Input:"
for i in lst:
print i
print "\nResult:\n%s" % recurse(lst)
>>>
Input:
{'i': 1}
{'i': 2}
{'i': [{'i': 5}, {'i': 6}]}
{'i': 3}
Result:
[{'i': 2}, {'i': 3}, {'i': [{'i': 6}, {'i': 7}]}, {'i': 4}]
は、私はそれが物事をやって行くには奇妙な方法のビットだ理解が、私は提供されたデータは、そのように構成されています。私は、私の問題は、Pythonが同じ関数から別の型を返すことができるということですが、私はScalaがそれを信じていないと考えています。
はまたレコードに対して、Scalaの要素は... Elemの(4)、またはElemの(リスト(Elemの(3)のように表されるので、私は、パターンマッチングは幾分それに来ることができると仮定する。
あなたは機能を実行したいとは言わないが、私はあなたのpythonコードを読んで見つけ出すつもりはない。 –
私はそれを持っている! –
私は分かりません。あなたは何を達成しようとしていますか?あなたのデータ構造は何ですか? – paradigmatic