Python
 Computer >> コンピューター >  >> プログラミング >> Python

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': {}}}}

  1. 文字のリストを文字列に変換するPythonプログラム

    Pythonはこの種の変換をたくさん必要とします。たとえば、このような変換はシリアル化の目的で役立ちます。このような変換の例は、-です。 ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'] to "hello world" Pythonには、このような変換に使用できる結合メソッドがあります。オブジェクトを連結するために使用される区切り文字列

  2. Pythonでリストをタプルに変換する方法は?

    タプル関数に渡すだけで、リストをタプルに変換できます。 例 my_list = [1, 2, 3] my_tuple = tuple(my_list) print(my_tuple) 出力 これにより、出力が得られます- (1, 2, 3)