`
18633917479
  • 浏览: 12093 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

合并字典

 
阅读更多

需求:有两个字典:user = {'name': "Trey", 'website': "http://treyhunner.com"}和defaults = {'name': "Anonymous User", 'page_name': "Profile Page"}。我们希望将二者合并至一个叫context的新字典里

要求:

  1. 如果存在重复的键,user字典中的值应覆盖defaults字典中的值;
  2. defaultsuser中的键可以是任意合法的键;
  3. defaultsuser中的值可以是任意值;
  4. 在创建context字典时,defaultsuser的元素不能出现变化;
  5. 更新context字典时,不能更改defaultsuser字典。

1.多次更新

context = {}
context.update(defaults)
context.update(user)

 运行结果:

context
{'website': 'http://treyhunner.com', 'name': 'Trey', 'page_name': 'Profile Page'}

 

 2.复制后更新

context = defaults.copy()
context.update(user)

 这种方法与前一种区别不大,可以很明显地看出defaults字典代表了默认值。

 

3.字典构造器dict()

context = dict(defaults)
context.update(user)

 此法与前一种非常相似, 但是没有前一种直接明了

 

4.关键词参数hack

context = dict(defaults, **user)

 5.字典解析

context = {k: v for d in [defaults, user] for k, v in d.items()}

 

 可读性有点差,如果要处理未知数量的字典,这是种好方法。

 

6.元素拼接

context = dict(list(defaults.items()) + list(user.items()))

 从每个字典中获取一个元素列表,将列表拼接起来,然后再利用拼接的列表在构建新字典

 

7.元素操作

 

context = dict(defaults.items() | user.items())
 

 

 

 

首先,没有满足第一点要求(user字典应该覆盖defaults)。因为两个dict_items对象的并集是一个键值对(key-value pairs)的集合,而集合是无序的,所以重复键的处理方法无法预测。

另外,没有满足第三点要求(可以是任意的值),因为集合要求其中元素必须可哈希的,所以键-值元组中的键和值都必须是可哈希的才行。 

8.Chain items

from itertools import chain
context = dict(chain(defaults.items(), user.items()))
 

 

 准确性高,更高效。

 

9.ChainMap

from collections import ChainMap
context = ChainMap({}, user, defaults)

 ChainMap将多个字典打包成一个proxy对象;ChainMap查找命令,会检索其中的字典,直到找到匹配的对象。

10.字典拆分

context = {**defaults, **user}

 Python 3.5,可以使用此方法。

 

分享到:
评论

相关推荐

    WPA已合并字典,共73M.

    此字典为WPA已合并字典,共73M,非常经典.

    超好用的字典合并软件

    字典去重复是指在合并字典后,去除其中具有相同键的重复项,确保每个键只对应一个唯一的值。这在构建词汇表、处理用户输入或者进行统计分析时非常有用,可以避免因重复数据导致的错误和冗余。 "超好用的字典合并去...

    虚拟机BT5批处理合并字典.docx

    虚拟机BT5批处理合并

    Python 炫技操作之合并字典的七种方法

    在Python编程中,合并字典是一项常见的操作,特别是在处理数据结构和对象的组合时。本文将详细介绍七种合并字典的方法,旨在为Python开发者提供不同的选择,并帮助他们在编写代码时更加灵活。 首先,最基础且直观的...

    跑包字典合并

    跑包字典合并,最全的跑包字典,包括600万,姓名拼音,手机电话,生日……

    Python实现合并字典的方法

    ### Python 实现合并字典的方法 在Python编程中,经常需要处理字典数据结构,而合并字典则是其中一项常见的需求。本篇文章将详细介绍几种不同的方法来实现字典的合并,并探讨每种方法的特点和适用场景。 #### 一、...

    在Python中合并字典模块ChainMap的隐藏坑【推荐】

    在Python编程中,合并字典是一项常见的操作,通常可以使用`update`方法来实现。但是,这种方法会直接修改原字典,可能导致不期望的结果。为了既能合并字典又不改变原始数据,Python提供了`collections`模块下的`...

    Python编写合并字典并实现敏感目录的小脚本

    在本文中,我们将探讨如何使用Python编写一个脚本来合并字典以及实现敏感目录的处理。这个脚本特别适用于网络安全领域的工作者,他们需要管理和合并大量的字典和敏感目录文件。 首先,我们来看0x00部分的起因。作者...

    python ChainMap 合并字典的实现步骤

    `ChainMap`并不会像`update`方法那样真正合并字典,而是创建了一个链式结构,允许在多个字典间进行查找。 首先,让我们详细了解`ChainMap`的工作原理。当你创建一个`ChainMap`实例,并传入一个或多个字典时,它会将...

    python两个_多个字典合并相加的实例代码

    此外,Python 3.5及以上版本中,还可以使用解包操作符**来合并字典,这是一种更简洁直观的方式: ```python A = {'a': 11, 'b': 22} B = {'a': 48, 'b': 13} print({**A, **B}) # 输出将是 {'a': 59, 'b': 35} ``` ...

    合并去重复字典,敏感目录文件的小脚本

    在处理过程中,可能会用到`dict.update()`方法或者通过迭代来合并字典,同时确保去重。 例如: ```python dict1 = {'a': 1, 'b': 2} dict2 = {'b': 3, 'c': 4} merged_dict = {**dict1, **dict2} # 使用Python字典...

    木头超级字典生成器使用完全教程文件.pdf

    木头超级字典生成器的主要功能包括生成字典、修改字典、分割字典、合并字典、清理字典等。生成字典功能可以生成多种类型的字典,包括常规字典、日期字典、英文单词、弱口令集、拼音字典、电话号码、姓名字典和社会...

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

    在Python编程中,合并字典并去除重复元素是一项常见的任务,尤其在数据处理和整合时。下面我们将详细探讨如何实现这一功能,以及处理不同情况下的问题。 首先,我们需要理解题目中给出的示例。给定两个键值对,分别...

    网络全库字典.txt

    合并字典清单1200多(含****数据库站点1000个左右),已分类出最常用的出密最多的先跑字典排列在前面第一个包。 1-常用字符组合(弱密类).txt 2-1个以上字母加6-8位生日.txt 3-字母加1-4个数字.txt 4-字母加5个以上...

    dictmerge:合并字典而不改变它们

    合并字典而不改变它们。 >>> d1 = { ' a ' : 1 } >>> d2 = { ' b ' : 2 } >>> dictmerge(d1, d2, moar = 3 ) {'a': 1, 'b': 2, 'moar': 3} 从Python 3.5开始,您可以使用以下语法来实现此目的: >>> d1 = { ' a '...

    字典制作文档及源代码

    - **过滤重复密码**:当合并字典时,可能会出现重复的密码,此功能用于去除这些重复项,保持字典的唯一性。需要注意的是,由于未使用多线程,处理大字典时速度较慢。 3. **编程语言选择**: - **C++ vs C**:作者...

    Python语言基础项目案例:字典的操作.pptx

    在这个Python语言基础项目案例中,我们探讨了字典这一数据结构的各种操作,包括创建、添加元素、修改元素、删除元素、查找元素、合并字典以及清空字典。以下是每个任务的详细说明: 1. 创建字典:首先,我们创建了...

Global site tag (gtag.js) - Google Analytics