返回顶部
首页 > 资讯 > 后端开发 > Python >详解Python实现字典合并的四种方法
  • 151
分享到

详解Python实现字典合并的四种方法

2024-04-02 19:04:59 151人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录1、用for循环把一个字典合并到另一个字典2、用dict(b, **a)方法构造一个新字典3、用b.update(a)的方法,更新字典4、把字典转换成列表合并后,再转换

1、用for循环把一个字典合并到另一个字典

把a字典合并到b字典中,相当于用for循环遍历a字典,然后取出a字典的键值对,放进b字典,这种方法python中进行了简化,封装成b.update(a)实现

>>> a = {'device_type': 'cisco_iOS', 'username': 'admin', 'passWord': 'cisco'}
>>> b = {'name': 'r1'}
>>> for k, v in a.items():
...     b[k] =  v
... 
>>> a
{'device_type': 'cisco_ios', 'username': 'admin', 'password': 'cisco'}
>>> b
{'name': 'r1', 'device_type': 'cisco_ios', 'username': 'admin', 'password': 'cisco'}

2、用dict(b, **a)方法构造一个新字典

使用**a的方法,可以快速的打开字典a的数据,可以使用这个方法来构造一个新的字典

>>> a = {'device_type': 'cisco_ios', 'username': 'admin', 'password': 'cisco'}
>>> b = {'name': 'r1'}
>>> c = dict(b, **a)
>>> c
{'name': 'r1', 'device_type': 'cisco_ios', 'username': 'admin', 'password': 'cisco'}
>>> a
{'device_type': 'cisco_ios', 'username': 'admin', 'password': 'cisco'}
>>> b
{'name': 'r1'}

3、用b.update(a)的方法,更新字典

>>> a = {'device_type': 'cisco_ios', 'username': 'admin', 'password': 'cisco'}
>>> b = {'name': 'r1'}
>>> b.update(a)
>>> a
{'device_type': 'cisco_ios', 'username': 'admin', 'password': 'cisco'}
>>> b
{'name': 'r1', 'device_type': 'cisco_ios', 'username': 'admin', 'password': 'cisco'}

4、把字典转换成列表合并后,再转换成字典

利用a.items()的方法把字典拆分成键值对元组,然后强制转换成列表,合并list(a.items())和list(b.items()),并使用dict把合并后的列表转换成一个新字典

(1)利用a.items()、b.items()把a、b两个字典转换成元组键值对列表

>>> a = {'device_type': 'cisco_ios', 'username': 'admin', 'password': 'cisco'}
>>> b = {'name': 'r1'}
>>> a.items()
dict_items([('device_type', 'cisco_ios'), ('username', 'admin'), ('password', 'cisco')])
>>> b.items()
dict_items([('name', 'r1')])
>>> list(a.items())
[('device_type', 'cisco_ios'), ('username', 'admin'), ('password', 'cisco')]
>>> list(b.items())
[('name', 'r1')]

(2)合并列表并且把合并后的列表转换成字典

>>> dict(list(a.items()) + list(b.items()))
{'device_type': 'cisco_ios', 'username': 'admin', 'password': 'cisco', 'name': 'r1'}

5、实例,netmiko使用json格式的数据进行自动化操作

(1)json格式的处理

#! /usr/bin/env python3
# _*_ coding: utf-8 _*_
import json
​
def creat_net_device_info(net_name, device, hostname, user, passwd):
   dict_device_info = {
                       'device_type': device,
                       'ip': hostname, 
                       'username': user, 
                       'password': passwd
                      }
   dict_connection = {'connect': dict_device_info}
   dict_net_name = {'name': net_name}
   data = dict(dict_net_name, **dict_connection)
   data = json.dumps(data)
   return print(f'生成的json列表如下:\n{data}')
​
​
if __name__ == '__main__':
   net_name = input('输入网络设备名称R1或者SW1的形式:')
   device = input('输入设备类型cisco_ios/huawei: ')
   hostname = input('输入管理IP地址: ')
   user = input('输入设备登录用户名: ')
   passwd = input('输入设备密码: ')
   json_founc = creat_net_device_info
   json_founc(net_name, device, hostname, user, passwd)

(2)json格式的设备信息列表

[
  {
       "name": "R1", 
       "connect":{
           "device_type": "cisco_ios",
           "ip": "192.168.47.10",
           "username": "admin",
           "password": "cisco"
      }
  },
  {
       "name": "R2", 
       "connect":{
           "device_type": "cisco_ios",
           "ip": "192.168.47.20",
           "username": "admin",
           "password": "cisco"
      }
  },
  {
       "name": "R3", 
       "connect":{
           "device_type": "cisco_ios",
           "ip": "192.168.47.30",
           "username": "admin",
           "password": "cisco"
      }        
  },
  {
       "name": "R4", 
       "connect":{
           "device_type": "cisco_ios",
           "ip": "192.168.47.40",
           "username": "admin",
           "password": "cisco"
      }    
  },
  {
       "name": "R5", 
       "connect":{
           "device_type": "cisco_ios",
           "ip": "192.168.47.50",
           "username": "admin",
           "password": "cisco"
      }
  }
]

(3)netmiko读取json类型信息示例

#! /usr/bin/env Python3
# _*_ coding: utf-8 _*_
​
import os
import sys
import json
from datetime import datetime
from netmiko import ConnectHandler
from concurrent.futures import ThreadPoolExecutor as Pool
​
def write_config_file(filename, config_list):
   with open(filename, 'w+') as f:
       for config in config_list:
           f.write(config)
​
def auto_config(net_dev_info, config_file):
   ssh_client = ConnectHandler(**net_dev_info['connect']) #把json格式的字典传入
   hostname = net_dev_info['name']
   hostips = net_dev_info['connect']
   hostip = hostips['ip']
   print('login ' + hostname + ' success !')
   output = ssh_client.send_config_from_file(config_file)
   file_name = f'{hostname} + {hostip}.txt'
   print(output)
   write_config_file(file_name, output)
   
def main(net_info_file_path, net_eveng_config_path):
   this_time = datetime.now()
   this_time = this_time.strftime('%F %H-%M-%S')
   foldername = this_time
   old_folder_name = os.path.exists(foldername)
   if old_folder_name == True:
       print('文件夹名字冲突,程序终止\n')
       sys.exit()
   else:
       os.mkdir(foldername)
       print(f'正在创建目录 {foldername}')
       os.chdir(foldername)
       print(f'进入目录 {foldername}')
​
   net_configs = []
​
   with open(net_info_file_path, 'r') as f:
       devices = json.load(f) #载入一个json格式的列表,json.load必须传入一个别表
​
   with open(net_eveng_config_path, 'r') as config_path_list:
       for config_path in config_path_list:
           config_path = config_path.strip()
           net_configs.append(config_path)
​
   with Pool(max_workers=6) as t:
       for device, net_config in zip(devices, net_configs):
           task = t.submit(auto_config, device, net_config)
       print(task.result())    
​
​
if __name__ == '__main__':
   #net_info_file_path = '~/net_dev_info.json'
   #net_eveng_config_path = '~/eve_config_path.txt'
   net_info_file_path = input('请输入设备json_inventory文件路径: ')
   net_eveng_config_path = input('请输入记录设备config路径的配置文件路径: ')
   main(net_info_file_path, net_eveng_config_path)

到此这篇关于详解Python实现字典合并的四种方法的文章就介绍到这了,更多相关Python字典合并内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 详解Python实现字典合并的四种方法

本文链接: https://lsjlt.com/news/143813.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 详解Python实现字典合并的四种方法
    目录1、用for循环把一个字典合并到另一个字典2、用dict(b, **a)方法构造一个新字典3、用b.update(a)的方法,更新字典4、把字典转换成列表合并后,再转换...
    99+
    2024-04-02
  • python解释器实现字典合并的方法
    这篇文章主要介绍python解释器实现字典合并的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!python的数据类型有哪些python的数据类型:1. 数字类型,包括int(整型)、long(长整型)和float...
    99+
    2023-06-14
  • 详解Python合并字典
    目录实例 1 : 使用 update() 方法,第二个参数合并第一个参数实例 2 : 使用 **,函数将参数以字典的形式导入总结给定一个字典,然后计算它们所有数字值的和。 实例 1 ...
    99+
    2024-04-02
  • Python|合并两个字典的8种方法
    在Python中,有多种方法可以通过使用各种函数和构造函数来合并字典。在本文中,我们将讨论一些合并字典的方法。 1. 使用方法update() 通过使用Python中的update()方法,可以将一个...
    99+
    2023-09-15
    python 开发语言
  • Python交换字典键值对的四种方法实例
    目录前言一、当值唯一时1. 使用zip进行交换2. 使用for循环遍历交换3. 使用dict.items()交换二、当值不唯一时总结前言 在学习过程中发现有时候交换字典的键和值,会使...
    99+
    2022-12-08
    python交换字典的键和值 python字典键值对互换 python字典键值对互换
  • python如何实现字典合并
    这篇文章将为大家详细讲解有关python如何实现字典合并,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。字典合并a = {'a': 1, 'b...
    99+
    2023-06-27
  • python解释器怎么实现字典合并
    这篇“python解释器怎么实现字典合并”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“python解释器怎么实现字典合并”文...
    99+
    2023-06-30
  • Python中合并字典的方法有哪些
    这篇文章主要讲解了“Python中合并字典的方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python中合并字典的方法有哪些”吧!Python字典字典是Python中特有的数据结构...
    99+
    2023-06-16
  • 如何使用Python实现字典合并
    这篇文章给大家分享的是有关如何使用Python实现字典合并的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、用for循环把一个字典合并到另一个字典把a字典合并到b字典中,相当于用for循环遍历a字典,然后取出a字...
    99+
    2023-06-29
  • Python中怎么实现字典合并操作
    本篇文章给大家分享的是有关Python中怎么实现字典合并操作,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。2.1 dict.updated1.update(d2) 确...
    99+
    2023-06-16
  • python字典合并值相加的方法是什么
    要合并两个字典的值并相加,可以使用以下方法: dict1 = {'a': 10, 'b': ...
    99+
    2024-03-02
    python
  • Python实现单例模式的四种方式详解
    简介:单例模式可以保证一个类仅有一个实例,并提供一个访问它的全局访问点。适用性于当类只能有一个实例而且客户可以从一个众所周知的访问点访问它,例如访问数据库、MQ等。 实现方式: 1、...
    99+
    2024-04-02
  • python字典取值的几种方法
            Python 字典(dictionary)是一种可变容器模型,可以存储任意数量的任意类型的数据。字典中的每个元素由一个键和一个值组成,键和值之间用冒号分隔。字典通常用于存储键值对的数据,例如在数据库中存储记录。   以下是 ...
    99+
    2023-09-06
    python Python字典 容器模型
  • Python字典删除键值对和元素的四种方法(小结)
    目录1.del删除字典本身2.pop()删除字典键值对 3.popitem()删除字典键值对4.clear()删除字典键值对:清空字典中的所有内容,但是不删除字典本身,del删除字典...
    99+
    2024-04-02
  • Android 实现监听的四种方法详解实例代码
    直接上代码,大家可以参考下 (1)自身类作为事件监听器 package cn.edu.gdmec.s07150745.work5; import android.suppor...
    99+
    2022-06-06
    监听 方法 Android
  • 详解C/C++实现各种字符转换方法合集
    目录一、std::string 和 std::wstring 互转1、直接声明std::wstring2、wstring_convert3、WideCharToMultiByte和M...
    99+
    2024-04-02
  • JavaScript数组实现扁平化四种方法详解
    目录1. 常规递归法2. reduce方法3. 扩展运算符实现4. split和toString共同处理数组的扁平化就是将一个嵌套多层的数组 array(嵌套可以是任何层数)转换为只...
    99+
    2022-11-13
    JS数组扁平化 JS数组
  • Python实现排序方法常见的四种
    1.冒泡排序,相邻位置比较大小,将比较大的(或小的)交换位置 def maopao(a): for i in range(0,len(a)): for j...
    99+
    2024-04-02
  • Python实现简单字典树的方法
    本文实例讲述了Python实现简单字典树的方法。分享给大家供大家参考,具体如下: #coding=utf8 """代码实现了最简单的字典树,只支持由小写字母组成的字符串。 在此代码基础上扩展一下,就可以...
    99+
    2022-06-04
    字典 简单 方法
  • Python根据字典值对字典进行排序的三种方法实例
    目录一、实际场景及解决思路二、字典排序的三种实现方法2.1 使用列表解析方法实现字典排序2.2 使用zip方法实现字典排序2.3 使用传递sorted函数的key参数实现字典排序三、...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作