一、介绍

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. KMP 算法学习

    KMP算法是用来做字符串匹配的.关于字符串匹配,最简单最容易想到的方法是暴利查找,使用双重for循环处理. 该方法的时间复杂度为O((n-m+1)*m) (n为目标串T长度,m为模式串P长度, 从T中 ...

  2. 最详细的 Android Toolbar 开发实践总结(转)

    转自:http://www.codeceo.com/article/android-toolbar-develop.html 过年前发了一篇介绍 Translucent System Bar 特性的文 ...

  3. koa-artTemplate 的使用

    1.父页面 <html> <head> <meta charset="UTF-8"> <title>我的音乐</title&g ...

  4. 6、Python 中 利用 openpyxl 读 写 excel 操作

    __author__ = 'Administrator' from openpyxl import load_workbook # Excel_Util 类 class Excel_util: #初始 ...

  5. PHP创建多级目录文件夹

    PHP创建多级目录的代码实例如下: <?php function create_dir($dirName) { // 去除输入目录名中的空格部分 $dirName = trim($dirName ...

  6. mysql的数据导出方法2

    首先,使用mysqldump命令的前提是,在Cmd中进入mysql安装目录下的bin目录下,才可以使用该命令.我的mysql安装在E:盘,所以,首先进入bin目录下:E:/Program Files/ ...

  7. Delphi获取指定文件的版本号

    获取指定文件的版本号 方式一: function GetFileVersion(FileName: string): string; type PVerInfo = ^TVS_FIXEDFILEINF ...

  8. 高级运维(二):搭建Nginx服务器、用户认证、基于域名的虚拟主机、SSL虚拟主机、Nginx反向代理

    一.搭建Nginx服务器 目标: 在IP地址为192.168.4.5的主机上安装部署Nginx服务,并可以将Nginx服务器,要求编译时启用如下功能: 1> SSL加密功能 2> 设置Ng ...

  9. Java-Class-@I:javax.annotation.PostConstruct

    ylbtech-Java-Class-@I:javax.annotation.PostConstruct 1.返回顶部   2.返回顶部 1.1. package com.ylbtech.api.pl ...

  10. CSS:CSS 表格

    ylbtech-CSS:CSS 表格 1.返回顶部 1. CSS 表格 使用 CSS 可以使 HTML 表格更美观. Company Contact Country Alfreds Futterkis ...