杰瑞科技汇

Python list如何转dict?

在 Python 中,将列表(list)转换为字典(dict)有多种方法,具体取决于列表的结构和你的需求,以下是几种常见情况的转换方法:

Python list如何转dict?-图1
(图片来源网络,侵删)

列表元素是键值对(偶数长度)

如果列表的长度是偶数,且奇数索引元素是键,偶数索引元素是值,可以直接用 zipdict 转换。

lst = ['a', 1, 'b', 2, 'c', 3]
result = dict(zip(lst[::2], lst[1::2]))
print(result)  # 输出: {'a': 1, 'b': 2, 'c': 3}

更简洁的方式(直接 zip 两个切片):

keys = lst[::2]   # ['a', 'b', 'c']
values = lst[1::2] # [1, 2, 3]
result = dict(zip(keys, values))

列表是 [key1, value1, key2, value2, ...] 的形式

与情况 1 类似,直接用 zip 分割列表:

lst = ['name', 'Alice', 'age', 25, 'city', 'Paris']
result = dict(zip(lst[::2], lst[1::2]))
print(result)  # 输出: {'name': 'Alice', 'age': 25, 'city': 'Paris'}

列表是 [key1, key2, key3, ...],所有值相同

如果所有键的值相同,可以用字典推导式:

Python list如何转dict?-图2
(图片来源网络,侵删)
keys = ['a', 'b', 'c']
value = 0
result = {k: value for k in keys}
print(result)  # 输出: {'a': 0, 'b': 0, 'c': 0}

列表是 [(key1, value1), (key2, value2), ...](元组列表)

直接用 dict() 转换:

lst = [('a', 1), ('b', 2), ('c', 3)]
result = dict(lst)
print(result)  # 输出: {'a': 1, 'b': 2, 'c': 3}

列表是 [key1, key2, key3, ...],值从另一个列表获取

如果键和值分别来自两个列表,用 zip 合并:

keys = ['a', 'b', 'c']
values = [1, 2, 3]
result = dict(zip(keys, values))
print(result)  # 输出: {'a': 1, 'b': 2, 'c': 3}

列表是 [key1, key2, key3, ...],值通过函数生成

用字典推导式动态生成值:

keys = ['a', 'b', 'c']
result = {k: len(k) for k in keys}  # 值为键的长度
print(result)  # 输出: {'a': 1, 'b': 1, 'c': 1}

列表是 [key1, key2, key3, ...],值是索引

enumerate 生成索引:

keys = ['a', 'b', 'c']
result = {k: i for i, k in enumerate(keys)}
print(result)  # 输出: {'a': 0, 'b': 1, 'c': 2}

列表是 [key1, key2, key3, ...],值是默认值

fromkeys 快速生成字典:

keys = ['a', 'b', 'c']
result = dict.fromkeys(keys, 0)  # 所有值默认为 0
print(result)  # 输出: {'a': 0, 'b': 0, 'c': 0}

列表结构 转换方法 示例
[k1, v1, k2, v2, ...] zip(lst[::2], lst[1::2]) dict(zip(lst[::2], lst[1::2]))
[(k1, v1), (k2, v2), ...] dict(lst) dict([('a', 1), ('b', 2)])
[k1, k2, k3, ...](值相同) 字典推导式 {k: 0 for k in keys}
[k1, k2, k3, ...](值来自另一个列表) zip(keys, values) dict(zip(keys, values))
[k1, k2, k3, ...](值是索引) enumerate {k: i for i, k in enumerate(keys)}
[k1, k2, k3, ...](值默认) fromkeys dict.fromkeys(keys, default)

选择最适合你数据结构的方法即可!

分享:
扫描分享到社交APP
上一篇
下一篇