一、创建字典:

d = {
"name": "morra", #字典是无序的
"age": 99,
"gender": 'm'
} a = dict()
b = dict(k1=123,k2="morra")

二、基本操作:

索引

d = {
"name": "morra",
"age": 99,
"gender": 'm'
}
print(d["name"])

键、值、键值对

keys():获取所有键

values():获取所有值

items():获取所有键值对

d = {
"name": "morra",
"age": 99,
"gender": 'm'
} print(d.keys())
print(type(d.keys())) print(d.values())
print(type(d.values())) print(d.items())
print(type(d.items())) OUTPUT:
dict_keys(['gender', 'age', 'name'])
<class 'dict_keys'> dict_values(['m', 99, 'morra'])
<class 'dict_values'> dict_items([('gender', 'm'), ('age', 99), ('name', 'morra')])
<class 'dict_items'>

循环

for a in d:         #字典在for中默认只能迭代输出key
print(a) OUTPUT:
name
gender
age #------------------ for i in d.keys(): #迭代输出key
print(i) OUTPUT:
name
gender
age #------------------ for j in d.values(): #迭代输出value
print(j) OUTPUT:
morra
m
99 #------------------ for k,v in d.items(): #迭代输出键值对
print(k,v) OUTPUT:
name morra
gender m
age 99

取值

实际上,在使用字典取值的时候使用最多的方法是get()而不是dict[key],因为如果当key值不存在时,使用get()可以调用一个默认值,但是在dict[key]中则会报错。

d = {
"name": "morra",
"age": 99,
"gender": 'm'
}
val1 = d.get('age')
val2 = d.get('get','123') #为key设置默认值
print(val1,val2) OUTPUT:
99 123

删除

pop(k):根据key值移除指定的键值对

d = {
"name": "morra",
"age": 99,
"gender": 'm'
} d.pop("name")
print(d) OUTPUT:
{'gender': 'm', 'age': 99}

popitem():从当前尾部移除键值对,由于字典是无序的,因此被移除的键值对也是随机的。

d = {
"name": "morra",
"age": 99,
"gender": 'm'
} d.popitem()
print(d)

del:删除指定索引的键值对,和pop()用法一样

d = {
"name": "morra",
"age": 99,
"gender": 'm'
} del d["name"]
print(d) OUTPUT:
{'age': 99, 'gender': 'm'}

判断

用in就可以了,但是在python2.7中可以使用has_key()

批量更新

update()方法只会更新与原来不同的键值对:

  • 如果key一样,value不一样,则会把原来的value覆盖掉。
  • 如果key不一样则会把两个键值对都添加进来。
  • 如果有一个键值对的key、value和原来一样,则不会更新。
d = {
"name": "morra",
"age": 99,
"gender": 'm'
} d1 = {
"name": "morra",
"age1": 991,
"gender1": 'm1'
} d.update(d1)
for k,v in d.items():
print(k,v) OUTPUT:
name morra
age1 991
gender1 m1
gender m
age 99

补充

  • fromkeys():

    由于list在迭代的时候没有只有一个值,所以不能直接使用dict(li)把列表转换为字典。在这里我们需要使用字典里的fromkeys()方法。

    fromkeys() :函数用于创建一个新字典,列表中的元素当做key,并为每个key设置一个固定值(value是可选的,如果没有默认为None)。
seq = ("name","key")
a = dict.fromkeys(seq)
b = dict.fromkeys(seq,1) print(a)
print(b) OUTPUT:
{'key': None, 'name': None}
{'key': 1, 'name': 1}
  • @staticmethod

    一般来说,要使用某个类的方法,需要先实例化一个对象再调用方法,或直接用类调用。而使用staticmethod装饰器之后,就可以不需要实例化,直接类名.方法名()来调用。

    这有利于组织代码,把某些应该属于某个类的函数给放到那个类里去,同时有利于命名空间的整洁。
@staticmethod
def fromkeys(*args, **kwargs):
"""
Returns a new dict with keys from iterable and values equal to value.
"""
pass

三、源码

class dict(object):
"""
dict() -> new empty dictionary
dict(mapping) -> new dictionary initialized from a mapping object's
(key, value) pairs
dict(iterable) -> new dictionary initialized as if via:
d = {}
for k, v in iterable:
d[k] = v
dict(**kwargs) -> new dictionary initialized with the name=value pairs
in the keyword argument list. For example: dict(one=1, two=2)
""" def clear(self):
"""清空字典"""
""" D.clear() -> None. Remove all items from D. """
pass def copy(self):
""" D.copy() -> a shallow copy of D """
pass @staticmethod # known case
def fromkeys(*args, **kwargs):
""" Returns a new dict with keys from iterable and values equal to value. """
pass def get(self, k, d=None):
""" D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None. """
pass def items(self):
""" D.items() -> a set-like object providing a view on D's items """
pass def keys(self):
""" D.keys() -> a set-like object providing a view on D's keys """
pass def pop(self, k, d=None):
"""
D.pop(k[,d]) -> v, remove specified key and return the corresponding value.
If key is not found, d is returned if given, otherwise KeyError is raised
"""
pass def popitem(self):
"""
D.popitem() -> (k, v), remove and return some (key, value) pair as a
2-tuple; but raise KeyError if D is empty.
"""
pass def setdefault(self, k, d=None):
""" D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D """
pass def update(self, E=None, **F): # known special case of dict.update
"""
D.update([E, ]**F) -> None. Update D from dict/iterable E and F.
If E is present and has a .keys() method, then does: for k in E: D[k] = E[k]
If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v
In either case, this is followed by: for k in F: D[k] = F[k]
"""
pass def values(self):
""" D.values() -> an object providing a view on D's values """
pass def __contains__(self, *args, **kwargs):
""" True if D has a key k, else False. """
pass def __delitem__(self, *args, **kwargs):
""" Delete self[key]. """
pass def __eq__(self, *args, **kwargs):
""" Return self==value. """
pass def __getattribute__(self, *args, **kwargs):
""" Return getattr(self, name). """
pass def __getitem__(self, y):
""" x.__getitem__(y) <==> x[y] """
pass def __ge__(self, *args, **kwargs):
""" Return self>=value. """
pass def __gt__(self, *args, **kwargs):
""" Return self>value. """
pass def __init__(self, seq=None, **kwargs): # known special case of dict.__init__
"""
dict() -> new empty dictionary
dict(mapping) -> new dictionary initialized from a mapping object's
(key, value) pairs
dict(iterable) -> new dictionary initialized as if via:
d = {}
for k, v in iterable:
d[k] = v
dict(**kwargs) -> new dictionary initialized with the name=value pairs
in the keyword argument list. For example: dict(one=1, two=2)
# (copied from class doc)
"""
pass def __iter__(self, *args, **kwargs):
""" Implement iter(self). """
pass def __len__(self, *args, **kwargs):
""" Return len(self). """
pass def __le__(self, *args, **kwargs):
""" Return self<=value. """
pass def __lt__(self, *args, **kwargs):
""" Return self<value. """
pass @staticmethod # known case of __new__
def __new__(*args, **kwargs):
""" Create and return a new object. See help(type) for accurate signature. """
pass def __ne__(self, *args, **kwargs):
""" Return self!=value. """
pass def __repr__(self, *args, **kwargs):
""" Return repr(self). """
pass def __setitem__(self, *args, **kwargs):
""" Set self[key] to value. """
pass def __sizeof__(self):
""" D.__sizeof__() -> size of D in memory, in bytes """
pass __hash__ = None

Python基本数据类型之dict的更多相关文章

  1. Python 基础数据类型之dict

    字典是另一种可变容器模型,且可存储任意类型对象.字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:d = {k ...

  2. Python基础数据类型(五) dict字典

    字典dict{} 字典数字自动排序 enumerate 枚举 for i,k in enumerate(dic,1) #第二个参数默认不写就是0 ---枚举 print(i,k) dict,以{}来表 ...

  3. Python基础数据类型-字典(dict)

    Python基础数据类型-字典(dict) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客使用的是Python3.6版本,以及以后分享的每一篇都是Python3.x版本的哟 ...

  4. python基本数据类型list,tuple,set,dict用法以及遍历方法

    1.list类型 类似于java的list类型,数据集合,可以追加元素与删除元素. 遍历list可以用下标进行遍历,也可以用迭代器遍历list集合 建立list的时候用[]括号 import sys ...

  5. python:数据类型dict

    一.字典 key -->value 储存大量数据,而且是关系型数据,查询速度非常快 数据类型分类: 可变数据类型:list , dict, set 不可变的数据类型:int , bool, st ...

  6. python 基本数据类型分析

    在python中,一切都是对象!对象由类创建而来,对象所拥有的功能都来自于类.在本节中,我们了解一下python基本数据类型对象具有哪些功能,我们平常是怎么使用的. 对于python,一切事物都是对象 ...

  7. python常用数据类型内置方法介绍

    熟练掌握python常用数据类型内置方法是每个初学者必须具备的内功. 下面介绍了python常用的集中数据类型及其方法,点开源代码,其中对主要方法都进行了中文注释. 一.整型 a = 100 a.xx ...

  8. python自学笔记(二)python基本数据类型之字符串处理

    一.数据类型的组成分3部分:身份.类型.值 身份:id方法来看它的唯一标识符,内存地址靠这个查看 类型:type方法查看 值:数据项 二.常用基本数据类型 int 整型 boolean 布尔型 str ...

  9. python之数据类型详解

    python之数据类型详解 二.列表list  (可以存储多个值)(列表内数字不需要加引号) sort s1=[','!'] # s1.sort() # print(s1) -->['!', ' ...

随机推荐

  1. des解密不完整,前面几位是乱码的解决办法

    在工作中遇到的Des解密问题,第三方发来的数据需要我们进行des解密,但是解密的结果前几位始终是乱码.废了半天劲,终于找到了问题所在. 下面先介绍一下des,了解des的同学可以直接看下面的解决办法. ...

  2. Scala入门之控制结构

    package com.dtspark.scala.basics /** * Scala中的基本控制结构有顺序.条件和循环三种方式,这个其它的JVM语言是一致的,但是Scala也有一些高级的流程控制结 ...

  3. (十七)迭代器模式详解(foreach的精髓)

    作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 各位好,很久没以LZ的身份和 ...

  4. C语言变参数函数

    #include<iostream> #include<stdarg.h> using namespace std; int sum(int cnt, ...){ va_lis ...

  5. Beta项目冲刺 --第五天

    忙里偷得半日闲-- 队伍:F4 成员:031302301 毕容甲 031302302 蔡逸轩 031302430 肖阳 031302418 黄彦宁 会议内容: 1.站立式会议照片: 2.项目燃尽图 3 ...

  6. git查看提交历史

    git日志的查看 在使用 Git 提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,我们可以使用 git log 命令查看. 查看日志信息: $ git log 可以用 --oneline ...

  7. mysql union和union all的区别

    union 对两个结果集进行并集操作,重复数据只显示一次 Union All,对两个结果集进行并集操作,重复数据全部显示 工具/原料 mysql 数据库 方法/步骤   student表数据   使用 ...

  8. Ubuntu下tftp服务器的搭建

    参考博客:http://blog.chinaunix.net/uid-26495963-id-3206829.html 1. 安装 $ apt-get install tftp-hpa tftpd-h ...

  9. Redis集群(五):集群搭建

    一.本文目的        演示在一台机器上搭建3主3从的redis集群,通过演示了解redis集群的搭建,使用和注意事项     二.搭建说明        1.同一台机器搭建3主3从的伪集群   ...

  10. JS自动填写分号导致的坑

    JS中会自动清除句子和句子之间的空格以及tab缩进, 这样就可以允许用户编写的代码更加随性和更加可读, 在该行代码解析的时候如果该行代码可以解析, 就会在该行代码最后自动填写分号,如果该行代码无法解析 ...