Python vlookup在字典列表之间

我想在两个字典列表之间做一个 vlookup,但我不想使用熊猫,我想使用纯 python 或另一个光库。

我想在两个字典列表之间做一个 vlookup,但我不想使用熊猫,我想使用纯 python 或另一个光库。

所以我有第一个列表:

dict_1 = [{'Name': 'Grant', 'Number': 1111, 'Adress': 'Sal'},
          {'Name': 'Jhon', 'Number': 2222, 'Adress': 'Sal_3'}]

然后我有第二个:

dict_2 = [{'Name': 'Grant', 'High': 3333, 'Tell': 'None1'},
          {'Name': 'Jhon', 'High': 4444, 'Tell': 'None2'}]

我想要一个新的字典列表,其中主键是两个列表之间的“名称”。

[{'Name': 'Grant',
  'Number': 1111,
  'Adress': 'Sal',
  'High': 3333,
  'Tell': 'None1'},
 {'Name': 'Jhon',
  'Number': 2222,
  'Adress': 'Sal_3',
  'High': 4444,
  'Tell': 'None2'}]
3

您需要一个主dictName分组,然后更新值以合并所有 dict,最后只保留它的值(合并的 dict)

result = {}
for value in dict_1 + dict_2:
    result.setdefault(value['Name'], {}).update(value)
result = list(result.values())
# after loop
{'Grant': {'Name': 'Grant', 'Number': 1111, 'Adress': 'Sal', 'High': 3333, 'Tell': 'None1'}, 
 'Jhon': {'Name': 'Jhon', 'Number': 2222, 'Adress': 'Sal_3', 'High': 4444, 'Tell': 'None2'}}
# final result
[{'Name': 'Grant', 'Number': 1111, 'Adress': 'Sal', 'High': 3333, 'Tell': 'None1'}, 
 {'Name': 'Jhon', 'Number': 2222, 'Adress': 'Sal_3', 'High': 4444, 'Tell': 'None2'}]
1

您可以使用itertools.product()获取两个列表之间的笛卡尔积,然后仅保留在'Name'键上匹配的字典:

from itertools import product
dict_1 = [{'Name': 'Grant', 'Number': 1111, 'Adress': 'Sal'},
          {'Name': 'Jhon', 'Number': 2222, 'Adress': 'Sal_3'}]
dict_2 = [{'Name': 'Grant', 'High': 3333, 'Tell': 'None1'},
{'Name': 'Jhon', 'High': 4444, 'Tell': 'None2'}]
result = [{**a, **b} for a, b in product(dict_1, dict_2) if a['Name'] == b['Name']]
print(result)

这打印:

[{'Name': 'Grant', 'Number': 1111, 'Adress': 'Sal', 'High': 3333, 'Tell': 'None1'},
 {'Name': 'Jhon', 'Number': 2222, 'Adress': 'Sal_3', 'High': 4444, 'Tell': 'None2'}]

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(164)
使用 css/html密码保护网页
上一篇
PHP的最佳IDE是什么
下一篇

相关推荐

  • Python vlookup在字典列表之间

    我想在两个字典列表之间做一个 vlookup,但我不想使用熊猫,我想使用纯 python 或另一个光库。…

    2022-11-18 14:01:57
    0 82 78
  • python浅拷贝和深拷贝区别、原理与实现

    示例示例Python中的浅拷贝和深拷贝是指在复制对象时,复制的结果和原来的对象之间的关系。浅拷贝:浅拷贝只复制一层,也就是说,它只复制最外围的对象,而不复制它包含的对象。如果最外围的对象中包含其他对象,那么这些对象将不会被复制,而是使用原来的对象。…

    2023-05-30 14:25:17
    0 27 26
  • python程序员待遇:Python程序员薪酬最高,收入惊人!

    Python程序员的待遇取决于他们的技能水平和工作经验。一般来说,Python程序员的薪资水平较高,尤其是对于那些有丰富工作经验的Python程序员而言,他们的薪资水平更高。此外,Python程序员还可以获得许多其他福利,包括住房补贴、交通补贴、带薪休假等。…

    2023-06-22 01:21:15
    0 79 71
  • python文本情感分析(含代码示例)

    Python文本情感分析是一种使用自然语言处理技术来分析文本中的情感倾向的过程。它可以帮助我们了解用户对特定主题的看法,从而改善产品和服务。…

    2023-04-23 00:28:07
    0 63 35
  • python字符串拼接数字从零开始

    实例实例Python字符串拼接数字,可以使用format()函数或者%运算符来实现。代码实例:…

    2023-08-20 08:25:28
    0 73 16
  • python中import re:如何使用Python中的re模块进行正则表达式匹配

    import re 是Python中正则表达式模块,可以用来处理字符串。它提供了一系列的函数,可以用来查找、替换和分割字符串,以及检查字符串是否符合特定的格式。…

    2023-05-02 10:25:33
    0 65 21
  • python安装pygame失败:解决python安装pygame失败的方法

    Python安装pygame失败的原因可能有很多,下面是一些常见的原因:安装环境不兼容:pygame只支持python2.7以上版本,而您可能安装的是python3.x或更低版本。…

    2023-04-15 03:55:19
    0 45 21
  • python是面向Python的优势

    Python是一种面向对象的编程语言,它提供了一种简单而强大的方法来创建可重用的代码。它使用类和对象来实现面向对象编程,允许程序员将代码封装在类中,以便在不同的程序中重复使用。…

    2023-05-02 04:34:35
    0 63 58

发表评论

登录 后才能评论

评论列表(87条)