问题

有两个字典dict,如何把它们合并成第3个字典。

下面是两个dict,分别放了几个人的成绩:

a = {'zhangsan':99, 'lisi':88, 'maisu':77}
b = {'wangwu':89, 'zhaoliu':97'}

希望合并成一个包含所有人成绩的字典:

c = {'zhangsan':99, 'lisi':88, 'maisu':77, 'wangwu':89, 'zhaoliu':97'}

Python 3.9以后的答案
如果你用的是Python 3.9或者更新的版本,那就很简单:

c = a | b

在3.9以后,dict类支持了或运算符,一下子就可以解决上面的问题了。

Python 3.5以后的答案

如果你的Python没有那么新,但也是在Python 3.5之后,也不复杂:

c = {**a, **b}

a表示给字典a解包,把a变成一个个单独的键值对。通过上面的写法,分别把ab**解包成单独的键值对,然后再放在大括号中成为新的字典。

如果是Python 3.5以前呢?这也太老了把,建议升级Python!

两个附加知识点

知识点1 - update方法

dict类有个update方法,可以实现类似的效果:

a.update(b) #把b中的键值对放入到a中去,如果a和b有相同的键值对,就用b中的值更新a。
print(a)  #结果是:{'zhangsan':99, 'lisi':88, 'maisu':77, 'wangwu':89, 'zhaoliu:97'}

用update和前面的不同之处在于,它直接更新了字典a,但前面的做法是创建了新的字典c, 不影响字典ab

知识点2 - 有重复的key怎么办?

如果a和b中都有zhangsan这个key怎么办?

前面的例子已经给出了答案:会保留后面一个字典中的值。这个规则同时适用于update和或运算符。

a = {'zhangsan':99, 'lisi':88, 'maisu':77}
b = {'wangwu':89, 'zhangsan':97'} #注意zhangsan是重复的
c = a | b #c是:{'zhangsan':97, 'lisi':88, 'maisu':77} 保留了b中的97.
a.update(b) #a是:{'zhangsan':97, 'lisi':88, 'maisu':77} 保留了b中的97.

职业发展

作为一个代码打工仔,对于绝大部分程序员来说,想要成为牛逼的真正挣钱程序员的路还很长,一刻都不能懈怠。

我们无法从HR角度,或者技术leader的角度来臆测哪种状态的面试更能获取面试官青睐。但通过我们积攒的大量的面试经验,大家多少可以推断一些成为有竞争力的程序员的一些必要条件。

大佬云集、资料丰富

当初我在字节认识一个非常非常资深的前辈,他到字节比我早三年,但因为各种原因级别不是很高。我当时问他,既然你对现状如此不满,为什么不想着离开寻找更好的机会呢?

他沉思了片刻跟我说,他说我现在在这里虽然待着不顺心,但是我接触到的人都是非常优秀的。我遇到问题,还可以和你们讨论讨论。我如果出去了,我要是再遇到问题,可能连一个讨论的人都没有。

我当时听听只是觉得有道理,现在再回想起来,感受非常深刻。三观、格局、能力,能够进入大公司的,这三个方面一般都不会太差。别的不说,就拿个人能力而言,我曾出国出差过几个月,有幸见识了许多各种海外名校的同事,和他们学习交流人工智能,这真的让我AI有了更深层次的认识。

除了优秀的同事之外,大公司里往往还有丰富的内部文档和资料。我当时在字节内部看到了很多优秀的文章,也有很多优秀的技术沙龙和分享。现在想起来两年下来,也没有去过几次,文章和资料看得也不算多,现在想想颇为遗憾。别的不说,就拿推荐领域而言,近些年质量不错的论文往往都来源于大公司尤其是国内的大公司,以腾讯、华为和头条为主。除了公开的论文,公司内部还有很多技术相关的资料和文档,这些真的可以说是有价无市,非常珍贵。

Python 知识手册

python双重字典 python两个字典_Python

Linux 知识手册

python双重字典 python两个字典_Python_02

爬虫查询手册

python双重字典 python两个字典_人工智能_03

而且,这些资料不是扫描版的,里面的文字都可以直接复制,非常便于我们学习:

数据分析知识手册:

python双重字典 python两个字典_python_04

机器学习知识手册:

python双重字典 python两个字典_深度学习_05

金融量化知识手册:

python双重字典 python两个字典_人工智能_06