Python dict 字典

1. 什么是Dictionary(字典)

字典就是很多的数据,但是它有一个目录,可以通过目录中的一个简单值来找到与之相对应的详细信息。换句话说,目录就是内容的一个特殊表示,即目录中的每一个字段,都会在内容中有与之对应的详细信息。也就是说,目录中的每一个信息都是唯一的,与目录中的其他信息互不冲突。
python中的Dictionary不只是用于存储字符串,还可以是任意数据类型,包括字符串和数组,对象,甚至其他的dictionary。dictionary的key可以是字符串和整数,也可以在一个dictionary中混用和匹配key的数据类型。

2. 定义dict

dic={"server":"apache","database":"master"}

每一个元素都是一个key-value对,整个元素用大括号括起来,可以通过key来引用其值,但不能通过值来获得key,所以

dic={"1":"a",2:"b",8:"aa"}
print dic[8]

3. 修改dict

在一个 dictionary中不能有重复的key,但我们可以给一个存在的 key赋值,覆盖原有的值。如,我要将Dictionary dic中“server”的值改为“weblogic”,

dic["server"] ="weblogic"

4.添加key-value

举个简单的例子:我要在Dictionary中添加user=’root’的键值对,

dic[“user”] = “root”。

5.Dictionary的常用方法

Dictionary中的常用方法:
len(a)得到字典a中元素的个数
a[k]取得字典a中键K所对应的值
a[k] = v设定字典a中键k所对应的值成为v
del a[k]使用 key从一个 dictionary中删除独立的元素。如,删除Dictionary dic中的user=’root’:del dic[“user”]
a.clear()从一个 dictionary中清除所有元素。如,删除Dictionary dic中的所有元素:dic.clear()
a.copy()得到字典副本
k in a字典中存在键k则为返回True,没有则返回False
k not in a字典中不存在键k则为返回true,反之返回False
a.has_key(k)判断字典a中是否含有键k
a.items()得到字典a中的键—值对list
a.keys()得到字典a中键的list
a.update([b])从b字典中更新a字典,如果键相同则更新,a中不存在则追加.
a.fromkeys(seq[, value])创建一个新的字典,其中的键来自sql,值来自value
a.values()得到字典a中值的list
a.get(k[, x])从字典a中取出键为k的值,如果没有,则返回x
a.setdefault(k[, x])将键为k的值设为默认值x。如果字典a中存在k,则返回k的值,如果不存在,向字典中添加k-x键值对,并返回值x
a.pop(k[, x])取出字典a中键k的值,并将其从字典a中删除,如果字典a中没有键k,则返回值x
a.popitem()取出字典a中键值对,并将其从字典a中删除
a.iteritems()返回字典a所有键-值对的迭代器。
a.iterkeys()返回字典a所有键的迭代器。
a.itervalues()返回字典a所有值的迭代器。

6. dict具体操作

6.1. 字典的遍历
dic={"a" : "apple", "b" : "banana", "g" : "grape", "o" : "orange"}
for k in dic:
    print "dic[%s]=" %k,dic[k]
6.2.字典的items()
dic={"a" : "apple", "b" : "banana", "g" : "grape", "o" : "orange"}
print dic.items()
for (k,v) in dic.items():
    print "dic[%s]=" %k,v
6.3.使用列表,字典作为字典的值
dict={"a" : ("apple",), "bo" : {"b" : "banana", "o" : "orange"}, "g" : ["grape","grapefruit"]}
print dict["a"] #('apple',)
print dict["a"][0] #apple
print dict["bo"] #{"b" : "banana", "o" : "orange"}
print dict["bo"]["o"]#orange
print dict["g"] #['grape', 'grapefruit']
print dict["g"][1] #grapefruit
6.4.输出key和value的列表
dict = {"a" : "apple", "b" : "banana", "c" : "grape", "d" : "orange"}
print dict.keys()
print dict.values()
print dict.items()
6.5.字典中元素的获取方法
#字典中元素的获取方法
dict = {"a" : "apple", "b" : "banana", "c" : "grape", "d" : "orange"}
print dict
print dict.get("c")         #grape         
print dict.get("e", "apple")#None
print dict.get("e")         #None
#get()的等价语句
D = {"key1" : "value1", "key2" : "value2"}
if "key1" in D:
    print D["key1"]
else:
    print "None"
6.6.字典的更新
#字典的更新
dict = {"a" : "apple", "b" : "banana"}
print dict
dict2 = {"c" : "grape", "d" : "orange"}
dict.update(dict2)
print dict
#udpate()的等价语句
D = {"key1" : "value1", "key2" : "value2"}
E = {"key3" : "value3", "key4" : "value4"}
for k in E:
    D[k] = E[k]
print D
6.7.调用sorted()排序
#调用sorted()排序
dict = {"a" : "apple", "b" : "grape", "c" : "orange", "d" : "banana"}
print dict  
#按照key排序
print sorted(dict.items(),key=lambda d:d[0])
#按照value排序
print sorted(dict.items(),key=lambda d:d[1])
6.8.字典的浅拷贝
dict = {"a" : "apple", "b" : "grape"}
dict2 = {"c" : "orange", "d" : "banana"}
dict2 = dict.copy()
print dict2
6.9.字典的深拷贝
import copy
dict = {"a" : "apple", "b" : {"g" : "grape","o" : "orange"}}
dict2 = copy.deepcopy(dict)
dict3 = copy.copy(dict)
dict2["b"]["g"] = "orange"
print dict
dict3["b"]["g"] = "orange"
print dict
6.10 添加字典条目
dict = {"a" : "apple", "b" : {"g" : "grape","o" : "orange"}}
dict.setdefault("c",{})["h"]="hello"
# 添加条目c,如果c不存在就新建一个{},向c中添加{"h":"hello"}

7. 注意

  • Dictionary中的key值是大小写敏感的。并且在同一个dictionary中不能有重复的key值。并且,Dictionary中没有元素顺序的概念
  • list:可以采用附属索引,从list的尾部开始向前计数。
    直接用a[1:n]实现list的切片
    直接append在队尾添加元素,在insert(pos,obj)在pos处加元素,extend连接list
    直接用index查找元素在list中的位置,没找到时会引发异常,可以用in判断是否存在
    直接用remove删除元素,可以直接用pop得到并删除以后一个元素。
    list可以用*运算符,当做重复器。[1,2]*3=[1,2,1,2,1,2]
    将list中1的每个元素应用一个函数,映射为另一个list:
li=[1,2,3,4]
lili=[elem*2 for elem in li]
print lili  #[2,4,6,8]
  • tuple:不可变的list,tuple可以作为dictionary的key,tuple可以用于一次赋值多个值。
  • python可以支持格式化字符串,将一个值插于%s的位置
params="hello"
print "string template contains %s" %(params)params="hello"
p="qy"
print "string template contains %s %s" %(params,p)

%d表示整数,%f表示浮点数,%.2f表示2位小数,%+.2f表示打印正负

  • “:”.join(list) #表示用:将list里的元素连接
params = ["hello","qy","welcome","to" ,"here"]
a=":".join(params)
print a
# hello:qy:welcome:to:here
  • string.split(“;”)是将字符串根据;分割
a="hello wicle i am peter"
b=a.split(" ")  #用空格作为分割
print b
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值