#!usr/bin/env python
# -*- coding:utf-8 -*- # 数据库中原有
old_dict = {
"#1": {'hostname': 'c1', 'cpu_count': 2, 'mem_capicity': 80},
"#2": {'hostname': 'c1', 'cpu_count': 2, 'mem_capicity': 80},
"#3": {'hostname': 'c1', 'cpu_count': 2, 'mem_capicity': 80}
} # cmdb 新汇报的数据
new_dict = {
"#1": {'hostname': 'c1', 'cpu_count': 2, 'mem_capicity': 800},
"#3": {'hostname': 'c1', 'cpu_count': 2, 'mem_capicity': 80},
"#4": {'hostname': 'c2', 'cpu_count': 2, 'mem_capicity': 80}
} # 需要删除:?
# 需要新建:?
# 需要更新:?
# 注意:无需考虑内部元素是否改变,只要原来存在,新汇报也存在,就是需要更新
oldkeys = set(old_dict)
newkeys = set(new_dict)
diferent_key_old = oldkeys.difference(newkeys) #老的里面有,新的里面没有,则删除老的里面
for i in diferent_key_old:
old_dict.pop(i)
print(old_dict) #删除后的字典
diferent_key_new = newkeys.difference(oldkeys) #新的里面有,老的里面没有,则添加到老的里面
for i in diferent_key_new:
old_dict[i] = new_dict[i]
print(old_dict) #添加后的字典
intersection_key = newkeys.intersection(oldkeys) #新的和老的交集
for i in intersection_key:
old_dict[i].update(new_dict[i])
print(old_dict) #同key修改后的字典
#!usr/bin/env python
# -*- coding:utf-8 -*-
#1、简述函数普通参数、指定参数、默认参数、动态参数的区别
#1)普通参数
#定义函数:
def Function_Name(parameter1,parameter2): #形参
pass
#调用函数:
#不指定形参调用时,提供的参数必须与形参数量和顺序一致,否则会报错
Function_Name("parameter1","parameter2") #实参 #2)指定参数
#指定参数调用,提供的参数用形参=实参的方式,可以改变参数的顺序调用
Function_Name(parameter2="parameter2",parameter1="parameter1") #3)默认参数
#定义函数:
#默认参数定义时,必须将默认的参数放置在最后
def Function_Name(parameter1,parameter2="parameter2"): #形参
pass
#默认参数调用可以省略,定义函数时默认了的参数,函数自动会默认定义的默认值
Function_Name("parameter1") #传parameter1,parameter2
#默认参数如果不省略,则传参时会用指定的参数覆盖默认参数
Function_Name("parameter1","parameter3") #传parameter1,parameter3 #4)动态参数
#######定义函数
#1)在形参数前面加*,普通调用实际传值时会将逗号分隔的参数以元组的形式传到函数内部,例如:参数为:11,22,33,[1,2,3]
#传到函数内部为元组:(11,22,33,[1,2,3])
#命名潜规则用 args
def Function_Name(*args):
#2)在形参数前面加**,普通调用实际传值时会将键值对以字典的形式传到函数内部,例如:参数为:key1=123,key2=456
#传到函数内部为字典:{"key1":123,"key2":456}
#命名潜规则用kwargs
def Function_Name(**kwargs):
#######调用函数(特殊调用)
#1)在实参前面加*,表示会将会将元组,列表,字典中的可迭代的对象,循环加入元组,例如:
def Function_Name(*args):
print(kwargs)
Function_Name(*[11,22,33],44) #传至函数内部变为(11,22,33,44,55)
#2)在实参前面加**,表示会将会将字典直接传到函数内部以字典的形式存在,例如:
def Function_Name(**kwargs):
print(kwargs)
Function_Name(**{"key1":123,"key2":456},key3=789) #传至函数内部变为{'key1': 123, 'key2': 456, 'key3': 789}
#!usr/bin/env python
# -*- coding:utf-8 -*- #2、写函数,计算传入字符串中【数字】、【字母】、【空格] 以及 【其他】的个数
def char_count(st=""):
dic = {}
number = 0 #表示数字
alphabetic = 0 #表示字母
space = 0 #表示空格
other = 0 #表示其他
for i in st:
if i.isdigit(): #记录数字
number += 1
elif i.isalpha(): #记录字母
alphabetic += 1
elif i.isspace(): #记录空格
space += 1
else:
other += 1
dic['number'] = number
dic['alphabetic'] = alphabetic
dic['space'] = space
dic['other'] = other
return dic print(char_count('123aad !!!!'))
#!usr/bin/env python
# -*- coding:utf-8 -*-
#3、写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。
def islength5(argument):
if isinstance(argument,(str,list,dict)): #判断传入的类型是否是字符串,列表,字典
bol = len(argument) > 5
return bol
else:
return None OB = 'afaafafaf'
print(islength5(OB))
#!usr/bin/env python
# -*- coding:utf-8 -*-
#4、写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容。
def is_containspace(args):
import types
if isinstance(args,str): #判断是否为str类型
for i in args:
if i.isspace():
return True
else:
for i in args:
if is_containspace(i):
return True
return False li = ['aa','bb',('aa','c c')]
print(is_containspace(li))
#!usr/bin/env python
# -*- coding:utf-8 -*-
#5、写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
def left_list2(lis):
if len(lis) > 2:
return lis[0:2]
else:
return lis li = [11,22,33,44]
print(left_list2(li))
#!usr/bin/env python
# -*- coding:utf-8 -*-
#6、写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。
def odd_element(iteration):
li = []
for i in range(0,len(iteration),2):
li.append(iteration[i])
return(li) li = [11,22,33,44,55]
print(odd_element(li))

下面两段代码的区别,第一种方法是建立一个新的字典,将处理后的字典赋值给新的字典,如果原字典和新字典都需要的情况下用这种方法,通常都是用这种做法的;

第二种方法是,在原来的字典的基础上进行修改。

#!usr/bin/env python
# -*- coding:utf-8 -*-
# 7、写函数,检查传入字典的每一个value的长度, 如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
# dic = {"k1": "v1v1", "k2": [11, 22, 33, 44]}
# PS: 字典中的value只能是字符串或列表 def left_dict2(dic={}):
new_dic = {}
for key,value in dic.items():
if len(value) > 2:
new_dic[key] = value[0:2]
else:
new_dic[key] = value
return new_dic dic = {"k1": "v1v1", "k2": [11, 22, 33, 44]}
print(left_dict2(dic))
#!usr/bin/env python
# -*- coding:utf-8 -*-
# 7、写函数,检查传入字典的每一个value的长度, 如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
# dic = {"k1": "v1v1", "k2": [11, 22, 33, 44]}
# PS: 字典中的value只能是字符串或列表
def left_dic2(args):
for key,value in args.items():
if len(value) > 2:
args[key] = value[0:2] dic = {"k1": "v1v1", "k2": [11, 22, 33, 44]}
left_dic2(dic)
print(dic)

【python之路16】作业的更多相关文章

  1. python之路——16

    王二学习python的笔记以及记录,如有雷同,那也没事,欢迎交流,wx:wyb199594 学习内容 1.内置函数 1. python 数据类型:int bool 数据结构:dic list tupl ...

  2. 【python之路16】lambda表达式

    1.lambda表达式,实际是建立一个简易的函数 下面代码中f1和f2表示是相同过程的代码 def f1(args): return args f2 = lambda args:args print( ...

  3. python 之路,Day11 (下)- sqlalchemy ORM

    python 之路,Day11 - sqlalchemy ORM   本节内容 ORM介绍 sqlalchemy安装 sqlalchemy基本使用 多外键关联 多对多关系 表结构设计作业 1. ORM ...

  4. Python之路,Day10 - 异步IO\数据库\队列\缓存

    Python之路,Day9 - 异步IO\数据库\队列\缓存   本节内容 Gevent协程 Select\Poll\Epoll异步IO与事件驱动 Python连接Mysql数据库操作 RabbitM ...

  5. Python之路,Day8 - Socket编程进阶

    Python之路,Day8 - Socket编程进阶   本节内容: Socket语法及相关 SocketServer实现多并发 Socket语法及相关 socket概念 socket本质上就是在2台 ...

  6. Python之路,Day4 - Python基础4 (new版)

    Python之路,Day4 - Python基础4 (new版)   本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 ...

  7. Python之路3【第一篇】Python基础

    本节内容 Python简介 Python安装 第一个Python程序 编程语言的分类 Python简介 1.Python的由来 python的创始人为吉多·范罗苏姆(Guido van Rossum) ...

  8. Python之路【第一篇】:Python简介和入门

    python简介: 一.什么是python Python(英国发音:/ pa θ n/ 美国发音:/ pa θɑ n/),是一种面向对象.直译式的计算机程序语言. 每一门语言都有自己的哲学: pyth ...

  9. Python之路

    Python学习之路 第一天   Python之路,Day1 - Python基础1介绍.基本语法.流程控制              第一天作业第二天   Python之路,Day2 - Pytho ...

随机推荐

  1. 如何应用AxureRP做原型设计

    什么是原型呢?这个在之前介绍为什么需要进行原型设计当中有提到,原型是产品的最初形态,确认用户对产品界面和操作功能可用性的需求,高保真的原型接近于产品的最终形态,但仍只是原型.产品原型简单的说就是产品设 ...

  2. Kubernetes架构介绍

    目录 Kubernetes架构 k8s架构图 一.K8S Master节点 API Server Scheduler Controller Manager ETCD 二.K8S Node节点 Kube ...

  3. Python pylint的安装和使用

    Pylint 是一个 Python 代码分析工具,它分析 Python 代码中的错误,查找不符合代码风格标准和有潜在问题的代码. Pylint 是一个 Python 工具,除了平常代码分析工具的作用之 ...

  4. utils03_将本地仓库推送到gitHub的2种方式

    1.使用ssh连接方式 创建一个新的仓库 复制SSH 配置连接属性 完成推送 刷新hdhRepository2仓库 2.使用HTTPS连接方式 创建一个新的仓库 复制HTTPS 配置连接属性 第一次推 ...

  5. 你真的了解cookies吗?

    互联网隐私安全,直接放链接吧,这一篇非常好的文章,详细,全面,专业. http://www.freebuf.com/articles/web/127266.html 浅谈Web客户端追踪 一.   W ...

  6. SQL2005自动备份,定期删除的维护计划及自动定期清除日志

    作为一名DBA,他们最常见的日常任务是: 1)定期完成数据库的完全备份或差异备份.2)定期清理备份文件,因为存储空间有限,可能只需要保存一个时期段内的文件(比如一周内或一月内). 而如何做到这两点呢? ...

  7. MySQL实战总结

    极客上买了<MySQL实战45讲>,用导图大致总结后,跟大家分享下

  8. Java虚拟机系列(一)---Java内存划分

    Java和C++之间有一堵由内存管理和垃圾收集技术所围成的“高墙”,墙外的人想进去,墙内的人却想出来.  ------摘自<深入理解Java虚拟机> 作为一个Java程序员,因为虚拟机的好 ...

  9. Cesium实现背景透明的方法

    前言 今天有人在Cesium实验室QQ群里问如何把地球背景做成透明的,当时我以为Cesium比较复杂的渲染机制可能即使context设置了alpha属性也未必能透明,所以和同学说可能得改Cesium代 ...

  10. matlab实现一次性实现多个文件夹图片转化为.mat文件

    %这里是主函数:命名为readImg.m; clc;clear; %---read_image; filepath = 'G:\人脸重建\data\src_all\';%图片路径可以根据自己需要修改; ...