Python语法学习记录之tuple该如何使用?
一、介绍
dict 的用法比较简单,它可以存储任意值,并允许是不同类型的值,下面实例来说明:
下面例子中 a 是整数, b 是字符串, c 是数组,这个例子充分说明哈希数组的适用性。
每一个元素是pair,包含key、value两部分。key是Integer或string类型,value 是任意类型。
键是唯一的,字典只认最后一个赋的键值。
不允许同一个键出现两次。创建时如果同一个键被赋值两次
二、字典初始化
1、普通赋值方法
print("===="*5,"dict init")
dic1 = {'a': 100, 'b':'boy', 'c':['o', 'p', 'q']}
print(type(dic1))
print("dic1:",dic1)
#可以直接增加一个元素,如果同名,则会改变原来的key的元素的值
dic1['d'] = 'dog'
dic1['c'] = 111 # 更新 'c'
print("dic1:",dic1)
#键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行
dic2 = {'a': 1}
print ("dic2: ", dic2)
dic2 = {('a'): 1}
print ("dic2: ", dic2)
dic2 = {('a','b'): 1}
print ("dic2: ", dic2)
#dic2 = {['a']: 1} #error
2、元组初始化方法
print("===="*5,"touple init")
tuple1 = ('name', 'age', 'sex')
dict1 = dict.fromkeys(tuple1)
print ("新的字典为 : %s" % str(dict1))
dict1 = dict.fromkeys(tuple1, 10)
print ("新的字典为 : %s" % str(dict1))
dict1 = dict.fromkeys(tuple1, [1,2,3])
print ("新的字典为 : %s" % str(dict1))
三、字典的引用遍历合并
print("===="*5,"key and value")
dic1 = {'a':1,'b':2,'c':3}
#输出所有的key
print("keys:",dic1.keys())
print(type(dic1.keys()))
#输出所有的value
print("values:",dic1.values())
print(type(dic1.values()))
#同dict[key],多了个没有则返回缺省值,0。[]没有则抛异常
print(dic1.get('a',"don not find"))
print(dic1.get('z',"don not find"))
print(dic1.get('z'))
print('a' in dic1)
#遍历
for k in dic1:
print(dic1.get(k))
dic1 = {'a':1,'b':2,'c':3}
print ("a 键的值为 : %s" % dic1.setdefault('a', 'ff'))
print ("d 键的值为 : %s" % dic1.setdefault('d', 'ff'))
print ("新字典为:", dic1)
dic1 = {'a':1,'b':2,'c':3}
print (type(dic1.items()))
print ("Value : %s" % dic1.items())
for i,j in dic1.items():
print(i, ":\t", j)
#计算字典元素个数,即键的总数
dic1 = {'a':1,'b':2,'c':3}
print("len:",len(dic1))
#输出字典,以可打印的字符串表示。
dic1 = {'a':1,'b':2,'c':3}
print("str:",str(dic1))
#增加合并字典
dic1 = {'a':1,'b':2,'c':3}
dic2 = {'d':4,'e':5,'f':6}
dic1.update(dic2) #不可以使用加法
print("dic1:",dic1)
四、字典的浅复制
#返回一个字典的浅复制
print,ThinkMarkets返佣http://www.kaifx.cn/broker/thinkmarkets.html("===="*5,"copy")
dic1 = {'a':1,'b':[2,3,4],'c':3}
dic2 = dic1 # 浅拷贝: 引用对象
dic3 = dic1.copy() # 浅拷贝: 深拷贝: 父对象(一级目录),子对象(二级目录)不拷贝,还是引用
# 修改 data 数据
dic1['a']=100
dic1['b'].remove(2)
# 输出结果
print(dic1)
print(dic2)
print(dic3)#存在浅拷贝
五、字典删除
#删除
print("===="*5,"del")
dic1 = {'a':1,'b':2,'c':3}
dic2 = {'d':4,'e':5,'f':6}
dic3 = {'g':7,'h':8,'i':9}
dic2.clear() #清空字典 后为空字典 还属于有定义状态 删除字典内所有元素
print("dic2:",dic2)
print(type(dic2.keys()))
del dic3['g']
print("dic3:",dic3)#删除dic后属于没有定义状态会报错
del dic3
#print("dic3:",dic3)#删除dic后属于没有定义状态会报错
dic1 = {'a':1,'b':2,'c':3}
pop_obj=dic1.popitem()
print(pop_obj)
print(dic1)
dic1 = {'a':1,'b':2,'c':3}
pop_obj=dic1.pop('a')
print(pop_obj)
print(dic1)
dic1 = {'a':1,'b':2,'c':3}
pop_obj=dic1.pop('d','none')
print(pop_obj)
print(dic1)
六、python dict内存使用
def write_data_to_dict(key,data):
将数据放入字典
if not data:
return []
d_dict[md5(key)] = data
if md5(key) in d_dict.keys():
d_dict.update(d_dict)
return d_dict[md5(key)]
def get_data_from_dict(key):
从字典中取出数据
if not key:
return []
if md5(key) in d_dict.keys():
return d_dict.setdefault(md5(key), {})
Python语法学习记录之tuple该如何使用?的更多相关文章
- python语法学习面向对象之继承
python语法学习面向对象之继承 转载自:http://www.cnblogs.com/Joans/archive/2012/11/09/2757368.html 只要涉及到面向对象,”类“是必须出 ...
- 转 python语法学习面向对象之继承
传送门 python语法学习面向对象之继承 只要涉及到面向对象,”类“是必须出现的一个代名词. 类和对象是面向对象编程的两个主要方面.类创建一个新类型,而对象是这个类的实例. 类的一些概念: 包括初始 ...
- python语法学习之函数、类、模块
Python中通过使用类(class)和对象(object)来实现面向对象(object-oriented programming,简称OOP)的编程. 面向对象编程的最主要目的是提高程序的重复使用性 ...
- Python爬虫学习记录【内附代码、详细步骤】
引言: 昨天在网易云课堂自学了<Python网络爬虫实战>,视频链接 老师讲的很清晰,跟着实践一遍就能掌握爬虫基础了,强烈推荐! 另外,在网上看到一位学友整理的课程记录,非常详细,可以优先 ...
- 简明 Python 教程--学习记录
注意,我们在print语句的结尾使用了一个 逗号 来消除每个print语句自动打印的换行符.这样做有点难看,不过确实简单有效. print # prints a blank line 注意,没有返回值 ...
- python语法学习笔记
函数的参数 定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了.对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被封装起来 ...
- python反序列化学习记录
pickle与序列化和反序列化 官方文档 模块 pickle 实现了对一个 Python 对象结构的二进制序列化和反序列化. "pickling" 是将 Python 对象及其所拥 ...
- python爬虫学习记录
爬虫基础 urllib,urllib2,re都是python自带的模块 urllib,urllib2区别是urllib2可以接受一个Request类的实例来设置url请求的headers,即可以模拟浏 ...
- python numpy学习记录
numpy是一个python和矩阵相关的库,在机器学习中非常有用,记录下numpy的基本用法 numpy的数组类叫做ndarray也叫做数组,跟python标准库中的array.array不同,后者只 ...
随机推荐
- teb教程9
通过costmap_converter来跟踪和包含动态障碍物 简介:利用costmap_converter来很容易跟踪动态障碍物 1.costmap_converter中提供了一个插件称之为costm ...
- MySQL练习题--sqlzoo刷题2
SELECT from Nobel Tutorial 1.Change the query shown so that it displays Nobel prizes for 1950. SELEC ...
- 前端学习(三)css选择器(笔记)
字体样式: color:red: font-size:12px: font-weight:bold/normal; font-style:italic/normal; f ...
- vue 本地环境API代理设置和解决跨域
写一个config.js文件,作为项目地址的配置. //项目域名地址 const url = 'https://exaple.com'; let ROOT; //由于封装的axios请求中,会将ROO ...
- js 循环json
var json= { "Type": "Coding", "Height":100 }; for (var key in json) { ...
- leetcode-回溯②-难题
题10: 回溯:另:动态规划复杂度更低 class Solution: def isMatch(self, s: str, p: str) -> bool: def helper(s,p): i ...
- go构造函数
go构造函数 结构体没有构造函数,你可以创建一个函数返回一个相应类型的实例代替(类似一个工厂): func NewSaiyan(name string, power int) *Saiyan { re ...
- Shiro学习(9)JSP标签
Shiro提供了JSTL标签用于在JSP/GSP页面进行权限控制,如根据登录用户显示相应的页面按钮. 导入标签库 Java代码 <%@taglib prefix="shiro&qu ...
- BZOJ 2005: [Noi2010]能量采集(容斥+数论)
传送门 解题思路 首先题目要求的其实就是\(\sum\limits_{i=1}^n \sum\limits_{j=1}^m [(gcd(i,j)-1)*2+1)]\),然后变形可得\(-n*m+2\s ...
- NOIp2018集训test-10-19 (bike day5)
Bike老爷问了好几天到底要怎样简单的题目你们才能AK啊终于在他每天降难度直到要走了才出了一套我们能AK的题.虽然前几天的题换成llj肯定随便AK. 其实最近有点方虽然通常最后都写完了把该拿的分拿了该 ...