Python字典是一个用于存储数据的结构。当数据需要包含与一个值 (key:value
) 相关的标签 (唯一的键) 时,这种数据类型是合适的。Python 列表不能够处理这种格式。 列表(s)需要转换为字典 格式 (key:value
)。
在下面的代码示例中,有各种方法来完成这种转换。
将列表中的一对图元转换为一个字典
要成功地将列表中的一对图元 转换成字典*(key:value*) 格式,列表中的每个图元必须正好包含两个元素。每个元组的第一个元素代表一个唯一的字典键。元组的第二个元素代表一个字典的值,从而创建一个key:value对。
第[2]行使用 [dict()](https://blog.finxter.com/python-dict/ "Python dict() — A Simple Guide with Video")
方法,并将 poets_list
作为一个参数。 这一行为遇到的每个元组创建并添加一个键:值对。这个转换的输出显示如下。
poets_lst = [('Frost', 1874), ('Keats', 1795), ('Emerson', 1803), ('Burns', 1759)]
poets_dict = dict(poets_lst)
print(poets_dict)
输出
{'Frost': 1874, 'Keats': 1795, 'Emerson': 1803, 'Burns': 1759}
请随时查看我们的相关视频,关于 [dict()](https://blog.finxter.com/python-dict/ "Python dict() — A Simple Guide with Video")
内置函数的相关视频。
使用字典理解法将列表中的元组对转换为一个字典
另一种将列表中的图元转换成字典*(key:value*)格式的方法是使用*字典理解法。如上所述,每个元组的第一个元素代表一个唯一的字典键*。元组的第二个元素代表一个字典中的值,从而创建一个key:value对。
第 [2] 行创建了poets_dict
字典。字典理解方法在每个元组中循环 ,创建一个key:value对并添加到poets_dict
。这个转换的输出显示如下。
poets_lst = [('Frost', 1874), ('Keats', 1795), ('Emerson', 1803), ('Burns', 1759)]
poets_dict = {k:v for k, v in poets_lst}
print(poets_dict)
输出
{'Frost': 1874, 'Keats': 1795, 'Emerson': 1803, 'Burns': 1759}
欢迎在我们的相关视频教程中学习字典理解的知识。
使用 dict() 和 zip() 将列表对转换为一个字典
在这个例子中,有两个长度相同的列表*(p_names和p_born*)。第一个列表包含诗人的名字*(p_names*),并成为唯一的字典键。第二个列表是与键相关的出生年份(p_born)值。
例子
Key Value Key:Value
p_names[0] p_born[0] = 'Frost', 1874
p_names[1] p_born[1] = 'Keats', 1795, etc.
在第 [3] 行,dict() 方法调用 zip() 方法。上面的两个列表作为这些方法的参数。第一个参数将是唯一的键(p_names)。第二个参数将是上述键的值。这个转换的输出显示如下。
p_names = ['Frost', 'Keats', 'Emerson', 'Burns']
p_born = [1874, 1795, 1803, 1759]
poets = dict(zip(p_names, p_born))
print(poets)
输出
{'Frost': 1874, 'Keats': 1795, 'Emerson': 1803, 'Burns': 1759}
使用fromkeys()将列表对转换为一个字典
fromkeys() 方法创建了一个新的字典,可以选择传递两个参数。第一个参数是一个元素序列(如一个列表)。这些元素转换为唯一的键。第二个参数是可选的。这个参数可以被分配一个单一的值或根本没有值。如果第二个参数为空,每个键:值对的默认值为无。
对于这个例子,列表(p_keys)为每个键:值对分配了唯一的键。注意下面的p_value包含一个单独的值。key:value对中的每个值都解析为这个字符串。
p_keys = ['Frost', 'Keats', 'Emerson', 'Burns']
p_value = 'Poet'
poet_dict = dict.fromkeys(p_keys, p_value)
print(poet_dict)
输出
{'Frost': 'Poet', 'Keats': 'Poet', 'Emerson': 'Poet', 'Burns': 'Poet'}