如何利用Python将列表对转换为一个字典

165 阅读3分钟

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_namesp_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'}