当前位置: 首页 > news >正文

3.7字典

字典dictionary
字段是python中唯一的映射关系。采用键值对(key-value)存储数据。Python对key进行哈希函数运算,根据计算结果决定value的存储位置,所以字典是无序列的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如数字,字符串,元组。

# -*-coding:utf-8 -*-
__date__ = '2018/2/7 9:50'
__author__ = 'xiaojiaxin'
__file_name__ = 'dict1'

#创建字典方法1
dict1={1:[1,2,3],2:"1000","name":"jiaxin"}
print(dict1)
print(dict1[1])
print(dict1["name"])

a=list((1,2,3))   #创建列表的新方法
print(a)
a=list([1,2,3])    #只需要在list()放一个序列,就可以转换成一个列表
print(a)
a=list("123")
print(a)
#创建字典方法2,不常用
dict2=dict(((1,"a"),(2,'b'),(3,'c'),))   #里面放键值对
print(dict2)

#增删改查

#增加
dict2["age"]=50
print(dict2)
#键存在不改值,不存在就创建键和值
return1=dict2.setdefault("home","ZHEJIANG")   #setdefault有返回值
print(dict2)
print(return1)
dict2.setdefault("hobby")
print(dict2)

#查
print(dict2["hobby"])
print(dict2[1])
print(dict2.keys())  #查找字段的所有键
#dict_keys([1, 2, 3, 'age', 'home', 'hobby'])  #不是列表类型,是dict_keys新的数据类型
print(list(dict2.keys()))    #转换成list类型使用
print(dict2.values())
print(dict2.items())

#改
dict2["name"]="jiaxin1"
print(dict2)

dict3={"name":"jiaxin3",10:"10"}
dict2.update(dict3)   #原值会被新值覆盖掉
print(dict3)
print(dict2)

#删
del dict3["name"]
print(dict3)
print(dict3.clear())
del dict3
ruturn2=dict2.pop(10)
print(dict2)
print(ruturn2)
return3=dict2.popitem()    #随机删除一组键值对,意义不大
print(dict2)
print(return3)

{1: [1, 2, 3], 2: '1000', 'name': 'jiaxin'}
[1, 2, 3]
jiaxin
[1, 2, 3]
[1, 2, 3]
['1', '2', '3']
{1: 'a', 2: 'b', 3: 'c'}
{1: 'a', 2: 'b', 3: 'c', 'age': 50}
{1: 'a', 2: 'b', 3: 'c', 'age': 50, 'home': 'ZHEJIANG'}
ZHEJIANG
{1: 'a', 2: 'b', 3: 'c', 'age': 50, 'home': 'ZHEJIANG', 'hobby': None}
None
a
dict_keys([1, 2, 3, 'age', 'home', 'hobby'])
[1, 2, 3, 'age', 'home', 'hobby']
dict_values(['a', 'b', 'c', 50, 'ZHEJIANG', None])
dict_items([(1, 'a'), (2, 'b'), (3, 'c'), ('age', 50), ('home', 'ZHEJIANG'), ('hobby', None)])
{1: 'a', 2: 'b', 3: 'c', 'age': 50, 'home': 'ZHEJIANG', 'hobby': None, 'name': 'jiaxin1'}
{'name': 'jiaxin3', 10: '10'}
{1: 'a', 2: 'b', 3: 'c', 'age': 50, 'home': 'ZHEJIANG', 'hobby': None, 'name': 'jiaxin3', 10: '10'}
{10: '10'}
None
{1: 'a', 2: 'b', 3: 'c', 'age': 50, 'home': 'ZHEJIANG', 'hobby': None, 'name': 'jiaxin3'}
10
{1: 'a', 2: 'b', 3: 'c', 'age': 50, 'home': 'ZHEJIANG', 'hobby': None, 'name': 'jiaxin3'}

其他操作及方法
#其他操作及方法

#深浅拷贝学完再看
dict4=dict2.fromkeys(["host1","host2","host3"],"test")
print(dict4)

dict5=dict2.fromkeys(["host1","host2","host3"],["test","test2"])
print(dict5)
dict5["host2"][1]='test3'    #实际效果是全部都改了
print(dict5)

{'host1': 'test', 'host2': 'test', 'host3': 'test'}
{'host1': ['test', 'test2'], 'host2': ['test', 'test2'], 'host3': ['test', 'test2']}
{'host1': ['test', 'test3'], 'host2': ['test', 'test3'], 'host3': ['test', 'test3']}

#排序

dict6={1:"111",2:"222",3:"13"}
print(sorted(dict6))   #只对键进行排序,只输出键
print(sorted(dict6.items()))     #对键进行排序,输出键值对

[1, 2, 3]
[(1, '111'), (2, '222'), (3, '13')]

#遍历 很重要!!!!!

print(dict2)
for i in dict2:
    print(i)
# 1
# 2
# 3
# age
# home
# hobby
for m,n in enumerate(dict2):
    print(m,"---",n)
# 0 --- 1
# 1 --- 2
# 2 --- 3
# 3 --- age
# 4 --- home
# 5 --- hobby
for m1,n1 in dict2.items():   #效率不高
    print(m1,">>>",n1)
# 1 >>> a
# 2 >>> b
# 3 >>> c
# age >>> 50
# home >>> ZHEJIANG
# hobby >>> None

for i in dict2:
    print(i,dict2[i])
# 1 a
# 2 b
# 3 c
# age 50
# home ZHEJIANG
# hobby None

转载于:https://blog.51cto.com/10777193/2069809

相关文章:

  • css线性炫酷动画
  • maven版本与jdk版本 对应关系
  • JSP --学习
  • js 拾遗之return
  • Linux颜色文件+tab+快捷键
  • [HNOI2010]BUS 公交线路
  • 瀑布开发和敏捷开发
  • 静态链表
  • SDUT OJ 数据结构实验之链表六:有序链表的建立
  • webpack-loader
  • 算法学习之路|搬运家具(模拟)
  • Java电商项目面试题(五)
  • 流媒体之HLS——综述
  • 人工智能三年行动计划启动,推动人工智能和实体经济深度融合
  • MySQL数据库----IDE工具介绍及数据备份
  • [译]如何构建服务器端web组件,为何要构建?
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • 【RocksDB】TransactionDB源码分析
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • egg(89)--egg之redis的发布和订阅
  • JavaScript 基础知识 - 入门篇(一)
  • java中的hashCode
  • Linux各目录及每个目录的详细介绍
  • Next.js之基础概念(二)
  • Protobuf3语言指南
  • React 快速上手 - 07 前端路由 react-router
  • scrapy学习之路4(itemloder的使用)
  • SpiderData 2019年2月16日 DApp数据排行榜
  • 读懂package.json -- 依赖管理
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 判断客户端类型,Android,iOS,PC
  • 前嗅ForeSpider教程:创建模板
  • 写代码的正确姿势
  • 一文看透浏览器架构
  • 正则表达式小结
  • 2017年360最后一道编程题
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • ​ArcGIS Pro 如何批量删除字段
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • (floyd+补集) poj 3275
  • (ZT)一个美国文科博士的YardLife
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (附源码)计算机毕业设计高校学生选课系统
  • (六)软件测试分工
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (一)Thymeleaf用法——Thymeleaf简介
  • (原)Matlab的svmtrain和svmclassify
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转) Android中ViewStub组件使用
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (转)iOS字体
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException