多次元リストをPythonでセットに解析する他の方法はありますか?逆に言えば、辞書を作って要素を一つずつセットに入れるということです。それを行うための他のより効率的な方法はありますか?
graph = {i: set() for l in triplets for i in l}
{graph[c[i]].add(c[i - 1]) for c in triplets for i in range(2, 0, -1)}
#input
tri = [
['t','u','p'],
['w','h','i'],
['t','s','u'],
['a','t','s'],
['h','a','p'],
['t','i','s'],
['w','h','s']
]
#i want the output
key is chat of each element from tri, value is the all chat in front of key in each element from tri
like u:{t}, ....
{
u:{'t', 's'}
p:{'u', 'a'}
h:{'w'}
i:{'h', 't'}
s:{'t', 'i', 'h'}
t:{'a'}
a:{'h'}
}
リスト内の各サブリストを反復処理し、すべてのサブリスト内の要素としてキーを、その要素の前の要素のセットとして値を使用して出力ディクショナリを作成できます。
tri = [
['t','u','p'],
['w','h','i'],
['t','s','u'],
['a','t','s'],
['h','a','p'],
['t','i','s'],
['w','h','s']
]
d = {}
for x in tri:
for y in x[1:]:
d.setdefault(y, set()).update(x[x.index(y) - 1])
print(d)
# {'u': {'s', 't'},
# 'p': {'a', 'u'},
# 'h': {'w'},
# 'i': {'h', 't'},
# 's': {'h', 'i', 't'},
# 't': {'a'},
# 'a': {'h'}}
set
順序付けされていないコレクションであるを使用しているため、キーの値の順序が変わる可能性があることに注意してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加