自定义列表到字典

2024-04-25 17:48:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个列表列表,我希望创建一个以每个元素的长度作为值的字典。我尝试了以下方法:

tmp = [['A', 'B', 'E'], ['B', 'E', 'F'], ['A', 'G']]
tab = []
for line in tmp:
    tab.append(dict((k, len(tmp)) for k in line))

但它的输出是:

[{'A': 3, 'B': 3, 'E': 3}, {'B': 3, 'E': 3, 'F': 3}, {'A': 3, 'G': 3}]

我应该做什么修改来获得输出:

{['A', 'B', 'E']:3, ['B', 'E', 'F']:3, ['A', 'G']:2}

提前谢谢。你知道吗

美联社


Tags: 方法in元素列表forlen字典line
2条回答
{tuple(t):len(t) for t in tmp}

输入:

[['A', 'B', 'E'], ['B', 'E', 'F'], ['A', 'G']]

输出:

{('A', 'G'): 2, ('A', 'B', 'E'): 3, ('B', 'E', 'F'): 3}

Dictionnary不接受list作为键,但接受tuple

不能将list对象用作字典键,它们是可变的和不可修改的。你可以把它们转换成元组。还要注意的是,您正在遍历每个子列表。只能通过在主列表上循环来使用生成器表达式:

In [3]: dict((tuple(sub), len(sub)) for sub in tmp)
Out[3]: {('A', 'B', 'E'): 3, ('A', 'G'): 2, ('B', 'E', 'F'): 3}

相关问题 更多 >