Ошибка, которую вы получаете, связана с тем, что вы пытаетесь установить list
в качестве ключа словаря. В следующем примере будут получены те же результаты:
>>> d = dict()
>>> d[['a', 'b']] = 123
Traceback (most recent call last):
File "<pyshell#18>", line 1, in <module>
d[['a', 'b']] = 123
TypeError: unhashable type: 'list'
Допустим, это сработает, но не создаст ожидаемый список, который вы получите sh. В результате получится что-то вроде этого:
{ ['a','b']: 2,
['c','d']: 2,
['a','b','c']: 3
}
Чтобы получить желаемый список, вам необходимо создать вложенный l oop (нативное решение) .
import inflect
p = inflect.engine()
l=[['a','b'],['c','d'],['a','b','c']]
new_list = list()
count = 1
already_used_labels = set()
# The nested loop...
for inner_list in l:
for label in inner_list:
if label in already_used_labels:
continue
new_list.append({'data': {'id': p.number_to_words(count), 'label': label}})
count += 1
already_used_labels.add(label)
Это приведет к:
[
{'data': {'id': 'one', 'label': 'a'}},
{'data': {'id': 'two', 'label': 'b'}},
{'data': {'id': 'three', 'label': 'c'}},
{'data': {'id': 'four', 'label': 'd'}}
]
PS
Для получения дополнительной информации о как преобразовать целые числа в слова ( inflect пакет).