Python-リストのリストをツリーのようなdictに変換します
ネストされたリストを指定して、その要素をツリーデータ構造の一部と見なすことができる辞書に変換します。この記事では、ネストされたリストを変換して、要素がデータ構造のようなツリーを表す辞書を追加する2つのアプローチを紹介します。
スライスの使用
スライスしてリスト内のアイテムを反転し、リスト内にアイテムが存在するかどうかを確認します。存在しない場合は無視し、存在しない場合はツリーに追加します。
例
def CreateTree(lst):
new_tree = {}
for list_item in lst:
currTree = new_tree
for key in list_item[::-1]:
if key not in currTree:
currTree[key] = {}
currTree = currTree[key]
return new_tree
# Given list
listA = [['X'], ['Y', 'X'], ['Z', 'X'], ['P', 'Z', 'X']]
print(CreateTree(listA)) 上記のコードを実行すると、次の結果が得られます-
出力
{'X': {'Y': {}, 'Z': {'P': {}}}} reduceとgetitemの使用
functoolsとoperatorモジュールを使用して、関数reduceとgetitemを取得します。これらの関数を使用して、リストからアイテムを取得し、アイテムをツリー構造に設定する2つの関数を定義します。ここでも、スライスアプローチを使用してリストの要素を逆にし、作成した2つの関数を適用して、要素がツリー構造になっている辞書を作成します。
例
from functools import reduce
from operator import getitem
def getTree(tree, mappings):
return reduce(getitem, mappings, tree)
def setTree(tree, mappings):
getTree(tree, mappings[:-1])[mappings[-1]] = dict()
# Given list
lst = [['X'], ['Y', 'X'], ['Z', 'X'], ['P', 'Z', 'X']]
tree = {}
for i in lst:
setTree(tree, i[::-1])
print(tree) 上記のコードを実行すると、次の結果が得られます-
出力
{'X': {'Y': {}, 'Z': {'P': {}}}} -
文字のリストを文字列に変換するPythonプログラム
Pythonはこの種の変換をたくさん必要とします。たとえば、このような変換はシリアル化の目的で役立ちます。このような変換の例は、-です。 ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'] to "hello world" Pythonには、このような変換に使用できる結合メソッドがあります。オブジェクトを連結するために使用される区切り文字列
-
Pythonでリストをタプルに変換する方法は?
タプル関数に渡すだけで、リストをタプルに変換できます。 例 my_list = [1, 2, 3] my_tuple = tuple(my_list) print(my_tuple) 出力 これにより、出力が得られます- (1, 2, 3)