列表转字符串,别让可变性毁了你的字典键 编程语言里, 字典属于极为强大的数据结构中的一种, 它是由键值对构成的数据结构, 有着好些优点。比如说, 获取值的时候时间复杂度是O(1), 于内存方面很高效, 容易进行更新、删除跟迭代操作, 还提供好多内置函数来实现快速操作。当直接使用列表时出现的问题对于这个要关注的主题, 是由于当去尝试把列表当作键的时候, 就出现了问题。列表在其中属于可变的数据类型。所以呢, 能够在列表的内部给它删除值, 进行更新值以及追加值的操作。那么, 要是从列表和列表项来生成一个哈希函数的话, 当列表里面的项发生了变化, 就没办法再找到那个哈希函数了, 原因在于哈希函数已然改变了。另外存在一个潜在问题, 那就是不同的列表有可能拥有相同的哈希值。要是有两个列表, 它们的值加起来是相同的, 那么它们的哈希值也将会是一样的。处于这种情形下, 要是把其中一个列表当作字典里的键来用, 并且去搜索有着相同哈希值的另一个列表, 字典没准就会给出错误的结果。The List To Tuple有这样一种方法, 它把字典的键列表转变成元组, 而后将这个元组用作键, 采用的是这种间接的方式, 注意, 虽然值没变化, 可数据类型已不是列表了。语法 tuple())my_dict {} my_list [1, 2, 3] my_tuple tuple(my_list) my_dict[my_tuple] Hello, World! print(my_dict){(1, 2, 3): Hello, World!}将列表转换为字符串另外一种办法是把列表转化成字符串数据类型, 字符串同样属于不可变数据类型, 所以我们能够把它当作字典的键。语法 .join(str(e) for e in ))在这里, 语句会从列表里获取各个元素, 然后把这些元素组合成一个字符串, Join函数会实现将字符串序列连接起来的操作。在代码当中, 我们首先有一个被命名为某种东西的列表。接下来, 我们运用那个将一个关于列表的某种事物联结在一起的联结操作。鉴于那某种事物能够被用作某种关键元素, 我们就把这个当作了某种事物的关键元素。my_list [1, 2, 3] my_list_str .join(str(e) for e in my_list) my_dict {my_list_str: value} print(my_dict) print(my_dict[my_list_str]){123: value} value将列表转换为JSON语法这里是JSON库的dumps方法它将Python对象序列化为JSON格式的字符串。dumps方法接受字符串的名称作为参数Example在下面的代码中我们首先导入了JSON库。接下来我们创建了一个名为my_list的列表。我们使用dumps方法从列表创建了一个序列化对象。现在我们将序列化对象作为字典键my_dict。import json my_list [1, 2, 3] my_key json.dumps(my_list) my_dict {my_key: value} print(my_dict){[1, 2, 3]: value}免费学习笔记深入立即使用在学习笔记中你将探索 的核心概念和高级技巧Example在下面的代码中我们首先导入了JSON库。接下来我们创建了一个名为my_list的列表。我们使用dumps方法从列表创建了一个序列化对象。现在我们将序列化对象作为字典键my_dict。import json my_list [1, 2, 3] my_key json.dumps(my_list) my_dict {my_key: value} print(my_dict){[1, 2, 3]: value}