如何将列表作为字典中的键值?

时间:2012-11-15 22:19:52

标签: python list dictionary tuples

我需要制作一个字典,你可以参考[[1,2],[3,4]] - > ([1,2]:0,[2,3]:0) 我尝试了不同的方法,但我不能在字典中使用列表。所以我尝试使用元组,但它仍然是相同的。任何帮助表示赞赏!

3 个答案:

答案 0 :(得分:4)

你需要使用元组:

dict.fromkeys((tuple(i) for i in [[1,2],[3,4]]), 0)

或(对于python2.7 +)

{tuple(i): 0 for i in [[1,2], [3,4]]}

编辑:

阅读评论,OP可能想要计算列表的出现次数:

>>> collections.Counter(tuple(i) for i in [[1,2], [1,2], [3,4]])
Counter({(1, 2): 2, (3, 4): 1})

答案 1 :(得分:3)

列表不能用作字典键,因为它们不可清除(可能因为它们可以被突变,所以不可能提出合理的哈希函数)。 tuple然而没有问题:

d = {(1,2):0, (3,4):0}

请注意,在您的示例中,您似乎暗示您正在尝试构建这样的字典:

((1,2):0, (3,4):0)

那不行。你需要大括号来制作字典。

答案 2 :(得分:0)

([1,2]:0, [2,3]:0)不是字典。我认为您打算使用:{(1,2):0, (2,3):1}