一、介绍

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该如何使用?的更多相关文章

  1. python语法学习面向对象之继承

    python语法学习面向对象之继承 转载自:http://www.cnblogs.com/Joans/archive/2012/11/09/2757368.html 只要涉及到面向对象,”类“是必须出 ...

  2. 转 python语法学习面向对象之继承

    传送门 python语法学习面向对象之继承 只要涉及到面向对象,”类“是必须出现的一个代名词. 类和对象是面向对象编程的两个主要方面.类创建一个新类型,而对象是这个类的实例. 类的一些概念: 包括初始 ...

  3. python语法学习之函数、类、模块

    Python中通过使用类(class)和对象(object)来实现面向对象(object-oriented programming,简称OOP)的编程. 面向对象编程的最主要目的是提高程序的重复使用性 ...

  4. Python爬虫学习记录【内附代码、详细步骤】

    引言: 昨天在网易云课堂自学了<Python网络爬虫实战>,视频链接 老师讲的很清晰,跟着实践一遍就能掌握爬虫基础了,强烈推荐! 另外,在网上看到一位学友整理的课程记录,非常详细,可以优先 ...

  5. 简明 Python 教程--学习记录

    注意,我们在print语句的结尾使用了一个 逗号 来消除每个print语句自动打印的换行符.这样做有点难看,不过确实简单有效. print # prints a blank line 注意,没有返回值 ...

  6. python语法学习笔记

    函数的参数   定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了.对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被封装起来 ...

  7. python反序列化学习记录

    pickle与序列化和反序列化 官方文档 模块 pickle 实现了对一个 Python 对象结构的二进制序列化和反序列化. "pickling" 是将 Python 对象及其所拥 ...

  8. python爬虫学习记录

    爬虫基础 urllib,urllib2,re都是python自带的模块 urllib,urllib2区别是urllib2可以接受一个Request类的实例来设置url请求的headers,即可以模拟浏 ...

  9. python numpy学习记录

    numpy是一个python和矩阵相关的库,在机器学习中非常有用,记录下numpy的基本用法 numpy的数组类叫做ndarray也叫做数组,跟python标准库中的array.array不同,后者只 ...

随机推荐

  1. 2019-8-31-How-to-parse-version-range

    title author date CreateTime categories How to parse version range lindexi 2019-08-31 16:55:58 +0800 ...

  2. win10配置jdk环境变量及遇到的坑

    第一步.在系统变量中新增变量命名JAVA_HOME,值为jdk的安装目录 JAVA_HOME C:\Program Files\Java\jdk1.8.0_231 第二步.在系统变量中增加path的值 ...

  3. elasticsearch依赖的jackson-jar包与jboss依赖的jackson-jar包“版本”冲突

    elasticsearch依赖的jackson-jar包与jboss依赖的jackson-jar包“版本”冲突,导致elasticsearch相关功能在本地tomcat服务器正常,但是部署到jboss ...

  4. 线段树维护线性基并——17西安icpc a

    #include<bits/stdc++.h> using namespace std; #define N 10005 int a[N],n,k,q; struct LB{ ]; LB( ...

  5. 分块——cf1207F

    这么傻逼的题当时想了那么久 用a数组维护原序列,b[i][j]表示 pos%i=j 的 a[pos]之和 对于每个修改1 x y,先直接修改a[x],然后枚举i=1..700,修改b[i][x%i] ...

  6. AntiPlug

    反插件工程 #pragma once #ifndef __ENHANFUNC_H__ #define __ENHANFUNC_H__ #include <iostream> #includ ...

  7. Java-Class-I:org.springframework.web.mutipart.MutipartFile

    ylbtech-Java-Class-I:org.springframework.web.mutipart.MutipartFile 1.返回顶部   2.返回顶部 1.1. import org.s ...

  8. CSS:CSS 边框

    ylbtech-CSS:CSS 边框 1.返回顶部 1. CSS 边框 CSS 边框属性 边框样式 边框样式属性指定要显示什么样的边界.  border-style属性用来定义边框的样式 border ...

  9. Jeecg集成Swagger-ui

    <context:component-scan base-package="springfox"/> <bean class="org.jeecgfra ...

  10. 13、testng.xml对用例进行分组

    目录如下: TestGroup.java 代码如下: package com.testng.cn; import org.testng.annotations.*; import static org ...