将列表自定义列表到字典中

时间:2016-09-26 15:05:12

标签: python python-2.7 dictionary

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

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}

提前致谢。

AP

2 个答案:

答案 0 :(得分:3)

您不能将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}

答案 1 :(得分:1)

{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不接受列表作为键,但是元组