如何将含键值对的列表转换为字典并交换键与值?
列表转字典并交换键值的实现
需求说明
原始输入列表:
l1=[{"key1":["value1"]},{"key2":["value2"]},{"key3":["value3"]}]
期望输出字典(交换键与值):
d1={"value1":"key1","value2":"key2","value3":"key3"}
实现方法
方法一:循环遍历构建字典
逐个遍历列表中的小字典,取出原键和对应列表中的值元素,以值为新键、原键为新值存入目标字典:
l1 = [{"key1": ["value1"]}, {"key2": ["value2"]}, {"key3": ["value3"]}] d1 = {} for item in l1: for k, v_list in item.items(): d1[v_list[0]] = k print(d1) # 输出: {'value1': 'key1', 'value2': 'key2', 'value3': 'key3'}
方法二:字典推导式(简洁写法)
用嵌套推导式一次性完成转换,逻辑和循环一致,代码更紧凑:
l1 = [{"key1": ["value1"]}, {"key2": ["value2"]}, {"key3": ["value3"]}] d1 = {v[0]: k for item in l1 for k, v in item.items()} print(d1) # 输出: {'value1': 'key1', 'value2': 'key2', 'value3': 'key3'}
注意事项
- 原始数据中每个键对应的值是列表类型,必须通过
v[0]取出列表内的唯一元素作为新字典的键 - 若列表中存在重复的value值,后出现的键会覆盖先出现的,因为字典的键具有唯一性
内容的提问来源于stack exchange,提问作者Ashu Rani
相关产品推荐
相关产品推荐

