Python交换字典键值对的四种方法实例

目录
  • 前言
  • 一、当值唯一时
    • 1. 使用zip进行交换
    • 2. 使用for循环遍历交换
    • 3. 使用dict.items()交换
  • 二、当值不唯一时
  • 总结

前言

在学习过程中发现有时候交换字典的键和值,会使得我们最后的输出结果更加直观明了,整理出以下四种交换方式(data是原字典,new_data 是交换后的字典)

一、当值唯一时

1. 使用zip进行交换

data= {'A':1, 'B':2, 'C':3}
new_data = dict(zip(data.values(), data.keys()))
print(new_data)
# 运行结果
# {1: 'A', 2: 'B', 3: 'C'}

2. 使用for循环遍历交换

data= {'A':1, 'B':2, 'C':3}
new_data = {}
for key, val in data.items():
    new_data[val] = key
print(new_data)
# 运行结果
# {1: 'A', 2: 'B', 3: 'C'}

3. 使用dict.items()交换

new_data = dict([val, key] for key, val in data.items())
print(new_data)
# 运行结果
# {1: 'A', 2: 'B', 3: 'C'}

上述三种方式的前提条件是值唯一。如果data = {'A': 1, 'B': 2, 'C': 3, 'D': 3},最后输出结果是{1: 'A', 2: 'B', 3: 'D'},C会被D代替。

二、当值不唯一时

如果值不唯一,可以使用下面这种方式,最后输出结果是{1: ['A'], 2: ['B'], 3: ['C', 'D']}

from collections import defaultdict

def main():
    data = {'A': 1, 'B': 2, 'C': 3, 'D': 3}
    new_data = defaultdict(list)
    for key, val in data.items():
        new_data[val].append(key)
    print(new_data)
# 运行结果
# {1: ['A'], 2: ['B'], 3: ['C', 'D']}

Python中通过Key访问字典,当Key不存在时,会引发‘KeyError’异常。为避免这种情况的发生,可以使用collections类中的defaultdict()方法来为字典提供默认值。该函数返回一个类似字典的对象。defaultdict是Python内建字典类(dict)的一个子类。

dict = defaultdict(factory_function)
# factory_function可以是list、set、str等等,作用是当key不存在时,返回的是工厂函数的默认值

当字典中没有的键第一次出现时,default_factory自动为其返回一个空列表,list.append()会将值添加进新列表;再次遇到相同的键时,list.append()将其值再添加进该列表。

总结

到此这篇关于Python交换字典键值对的四种方法的文章就介绍到这了,更多相关Python交换字典键值对内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python字典键值对的添加和遍历方法

    添加键值对 首先定义一个空字典 >>> dic={} 直接对字典中不存在的key进行赋值来添加 >>> dic['name']='zhangsan' >>> dic {'name': 'zhangsan'} 如果key或value都是变量也可以用这种方法 >>> key='age' >>> value=30 >>> dic[key]=value >>> dic {'age': 30

  • python 获取字典键值对的实现

    获 得 字 典 键. 值 的 函 数 有: items/ iteritems/ keys/ iterkeys/ values/ itervalues 通 过 以 上 这 些 函 数 得 到 的 是 键 或 者 值 的 列 表. 例: a_dict = {" name": "sir", "lang": "python", "email": "sir@ gmail.com", "w

  • Python交换字典键值对的四种方法实例

    目录 前言 一.当值唯一时 1. 使用zip进行交换 2. 使用for循环遍历交换 3. 使用dict.items()交换 二.当值不唯一时 总结 前言 在学习过程中发现有时候交换字典的键和值,会使得我们最后的输出结果更加直观明了,整理出以下四种交换方式(data是原字典,new_data 是交换后的字典) 一.当值唯一时 1. 使用zip进行交换 data= {'A':1, 'B':2, 'C':3} new_data = dict(zip(data.values(), data.keys()

  • Python合并字典键值并去除重复元素的实例

    假设在python中有一字典如下: x={'a':'1,2,3', 'b':'2,3,4'} 需要合并为: x={'c':'1,2,3,4'} 需要做到三件事: 1. 将字符串转化为数值列表 2. 合并两个列表并添加新的键值 3. 去除重复元素 第1步通过常用的函数eval()就可以做到了,第2步需要添加一个键值并添加元素,第3步利用set集合的性质可以达到去重的效果,不过最后需要再将set集合转化为list列表.代码如下: x={'a':'1,2,3','b':'2,3,4'} x['c']=

  • python中list列表删除元素的四种方法实例

    目录 在python列表中删除元素主要分为以下3种场景: del:根据索引值删除元素 pop():根据索引值删除元素 remove():根据元素值进行删除 clear():删除所有元素 补充: 删除元素的变相方法 总结 在python列表中删除元素主要分为以下3种场景: 根据目标元素所在的索引位置进行删除,可以使用del关键字或pop()方法: 根据元素本身的值进行删除,可使用列表(list类型)提供的remove()方法: 将列表中所有元素全部删除,可使用列表(list类型)提供的clear(

  • Java 不使用第三方变量交换两个变量值的四种方法详解

    目录 变量本身交换数值 算术运算 指针地址操作 位运算 简单总结 哈喽,大家好,我是阿Q.前几天有个小伙伴去面试,被面试官的一个问题劝退了:请说出几种不使用第三方变量交换两个变量值的方法. 问题有点绕,好不容易缕清了面试官的问题,却发现答不上来.一时间尴尬无比,只能硬着头皮说不会. 遇到交换变量值的问题,通常我们的做法是:定义一个新的变量,借助它完成交换. 代码如下: t = a; a = b; b = t; 但问题的重点是"不使用第三方变量",那就变得"可爱"起来

  • AJAX跨域请求数据的四种方法(实例讲解)

    由于浏览器的同源策略 ajax请求不可以接收到请求响应回来的数据 请求数据需要调用浏览器的内置构造函数 XMLHttpRequest() 进行 实例对象 var xhr = new XMLHttpRequest(); 注意点 在IE8之前支持的 ActiveXobject("Microsoft.XMLHTTP");  记住要进行兼容处理哦  在这里我就不写了 通过该对象进行获取 获取数据的四种状态  xhr.readyState 该属性保存着请求数据的几种状态 1.xhr.open(请

  • PHP从数组中删除元素的四种方法实例

    茴香豆的"茴"字有四种写法,PHP从数组中删除元素也有四种方法 ^_^. 删除一个元素,且保持原有索引不变 使用 unset 函数,示例如下: <?php $array = array(0 => "a", 1 => "b", 2 => "c"); unset($array[1]); //↑ 你想删除的key ?> 输出: Array (     [0] => a     [2] =>

  • javascript实现html页面之间参数传递的四种方法实例分析

    本文实例讲述了javascript实现html页面之间参数传递的四种方法.分享给大家供大家参考,具体如下: 我们知道,在服务器端asp,jsp等程序可以接受html页面上的form传来的参数.那么,可不可以传递参数给html页面呢.可以. 原理:通过window.location.href中的分割符获得各个参数 方法一: /* *函数功能:从href获得参数 *sHref: http://www.cscenter.com.cn/arg.htm?arg1=d&arg2=re *sArgName:a

  • vue下载excel文件的四种方法实例

    目录 1.通过url下载 2.通过 a 标签 download 属性结合 blob 构造函数下载 3.通过 js-file-download 插件 4.使用fetch下载 总结 1.通过url下载 即后端提供文件的地址,直接使用浏览器去下载 通过window.location.href = 文件路径下载 window.location.href = `${location.origin}/operation/ruleImport/template` 通过 window.open(url, '_b

  • python 比较字典value的最大值的几种方法

    python中获取字典的key列表和value列表 # -*- coding: utf-8 -*- # 定义一个字典 dic = {'剧情': 11, '犯罪': 10, '动作': 8, '爱情': 3, '喜剧': 2, '冒险': 2, '悬疑': 2, '惊悚': 2, '奇幻': 1} #通过list将字典中的keys和values转化为列表 keys = list(dic.keys()) values = list(dic.values()) # 结果输出 print("keys列表

随机推荐