Создать словарь для ключа: значение из двухмерного списка

есть ли другой способ проанализировать многомерный список в 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'}
}
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
88
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете перебирать каждый подсписок в списке и создавать выходной словарь с ключом в качестве элемента и значениями как набор предыдущих элементов этого элемента во всех подсписках.

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, который представляет собой неупорядоченную коллекцию.

мило спасибо. так что я думаю, я могу построить понимание слов в одной строке

A.Lee 27.10.2018 07:01

Да, setdefault - отличная функция для использования, когда вы не уверены, находится ли ключ в словаре.

D. LaRocque 27.10.2018 23:10

Другие вопросы по теме