在嵌套列表的字典理解中使用枚举

Using enumerate within a dictionary comprehension of a nested list

是否有一种 elegant/pythonic 方法可以从带有枚举的嵌套列表创建字典,它在子列表级别而不是列表列表级别枚举?

请考虑这个例子:

nested_list = [["ca", "at"], ["li", "if", "fe"], ["ca", "ar"]]

我尝试将其转换成如下所示的字典:

# Desired output.
# {'ca': 0, 'at': 1, 'li': 2, 'if': 3, 'fe': 4, 'ar': 5}

这是我最好的尝试,但它似乎在上层枚举列表并覆盖重复键的值 - 这是不可取的。

item_dict = {item: i for i, item in enumerate(nested_list) for item in item}
# Current output.
# {'ca': 2, 'at': 0, 'li': 1, 'if': 1, 'fe': 1, 'ar': 2}

我是否最好将此任务拆分为非嵌套步骤,然后是字典理解步骤?

感谢所有见解,谢谢。

使用itertools.chain

例如:

from itertools import chain

nested_list = [["ca", "at"], ["li", "if", "fe"], ["ca", "ar"]]
result = {}
c = 0
for i in chain.from_iterable(nested_list):
    if i not in result:
        result[i] = c
        c += 1
print(result)

输出:

{'ca': 0, 'at': 1, 'li': 2, 'if': 3, 'fe': 4, 'ar': 5}

我想我已经解决了,但是它很难看...

{key: i for i, key in enumerate(set([item for item in nested_list for item in item]))}
# Output.
{'if': 0, 'at': 1, 'fe': 2, 'li': 3, 'ca': 4, 'ar': 5}