#!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. requirements.txt 作用

    requirements.txt的作用 用于记录所有依赖包及其精确的版本号.以便新环境部署. 使用pip生成 pip freeze >requirements.txt 当需要创建这个虚拟环境的完 ...

  2. python面向对象应用-1

    #猫 定义类 class Cat: type = '猫' #通过__init__初始化的特征 def __init__(self,nickname,age,color): self.nickname ...

  3. AppScan的基础使用

    AppScan是用于Web项目的安全测试工具,扫描网站所有url,自动测试是否存在各种类型的漏洞.AppScan安装在Windows环境上,版本越高,规则库越安全,扫描越全面.   1. 打开AppS ...

  4. Spring Cloud Config-Client 无法获取 Config-Server 在 github 上的配置文件的属性值,竟然是因为

    Spring Cloud Config-Client 无法获取 Config-Server 在 github 上的配置文件的属性值,竟然是因为!!! 2018年07月23日 16:33:25 一颗很菜 ...

  5. Windows API 25篇 TerminateProcess

    导语:结束一个进程的方法通常有:exit(), ExitProcess, TerminateProcess. 通常一个进程在正常情况下结束的话,系统会调用 ExitProcess函数结束进程,但有时候 ...

  6. _itoa _itow _itot atoi atof atol

    函数原型: char *_itoa( int value, char *string, int radix ); //ANSI wchar_t * _itow( int value, wchar_t ...

  7. JZOJ P5829 HZOI 20190801 A string 线段树

    JZOJ P5829 A. string 题面:https://www.cnblogs.com/Juve/articles/11286476.html 考场上想起了排序这道题:https://www. ...

  8. 搭建Angular环境

    一.安装nodejs 登录nodejs官网,下载对应系统版本:安装,只要一直下一步即可. 在nodejs中自带了npm,不需要独立安装npm. 输入node -v /npm -v  查看node和np ...

  9. 工控安全入门(四)—— DNP3协议

    我们之前看过了法国施耐德的Modbus.德国西门子的S7comm,这次就让我们把目光投到美洲,看看加拿大的HARRIS的DNP3有什么特别之处. 这次选用的流量包部分来自w3h的gitbub: htt ...

  10. Delphi 设计模式:《HeadFirst设计模式》Delphi2007代码---工厂模式之工厂方法[转]

      1   2{<HeadFirst设计模式>工厂模式之工厂方法 }   3{ 产品类                              }   4{ 编译工具 :Delphi20 ...