一、字典

1、字典的特点:

        一系列键-值对(key-value),字典用放在花括号{ }中的一系列键值对表示;

        字典中有多个元素时需要用逗号,隔开;

        key不能重复;

        字典是无序的。

 字典的优点:字典取值方便,速度快,比列表取值快,不需要像列表一样一个一个找。

2、字典的方法:

已存在的字典:
info = { "name":"andy", "color":"red", "city":"beijing" }

(1)增加

方法有二:

【1】向字典info中增加一个新的key:height

info['height']=160

【2】向字典info中增加一个新的key:sex

info.setdefault('sex','male')

如上两种方法在新增不存在的键时没有区别,但要是增加已存在的键,则不同:

若使用方法【1】可修改原存在的键对应的值;

若使用方法【2】则不会修改原存在的键对应的值;

(2)删除

方法有二:

【1】pop方法

info.pop('sex')

【2】del方法

del info['sex']

随机删除一个元素方法不常用,info.popitem()

(3)修改

同新增的【1】方法

info['height']=160

(4)取值

【1】输入键取对应的值

print(info['color'])

【2】使用get取值

print(info.get('color'))

如上两种方法都可以取已存在的key,若取字典里不存在的key,则不同:

【1】会报错

【2】返回None    (使用此方法可设置取不到值时,传入默认值,方法为info.get('color','red'))

>获取字典里所有的key

print(info.keys())

>获取字典里所有的value

print(info.values())

 (5)清空

info.clear()

(6)update与list中的extend类似,如下为将stu字典加入到info字典中

stu ={
    'stu_id':'123456',
    'stu_no':'no.1'      
}
info.update(stu)
print(info)

 3、多层字典取值

stu_info  = {
    'liudonghai':{
        'house':['三环','四环','五环'],
        'car':{
            'china':['byd','五菱宏光','Hongqi'],
            'jap':['丰田','本田'],
            'Germany':{
                'ben-z':2,
                'bmw':3,
                'audi':5
            }
        }
    }
}

#1、刘东海又买了一辆宝马
stu_info['liudonghai']['car']['Germany']['bmw']+=1
print(stu_info['liudonghai']['car']['Germany']['bmw'])
#2、刘东海不要byd和红旗了
stu_info['liudonghai']['car']['china'].remove('byd')
print(stu_info['liudonghai']['car']['china'])
stu_info['liudonghai']['car']['china'].pop(-1)
print(stu_info)

4、循环字典:

accounts = {
    "liuzhao":"123456",
    "liudonghai":"123456",
    "zhaowenming":"3154325345",
    "xiaoming":"34523434"
}
for k in accounts: #直接循环字典每次循环的时候取到的是字典的key
    print("%s => %s"%(k,accounts[k])) #同时取到key和value--方法1
for k,v in accounts.items():  #同时取到key和value--方法2,没有上面的方法1效率高
    print("%s => %s"%(k,v))


l  = ['liuzhao', 'liudonghai', 'zhaowenming', 'xiaoming', 'users']
s = '34125345235355ssssss'
for i in l: #循环list,循环list里的每一个元素
    print(i)

for j in s: #循环字符串,循环字符串里的每一个元素
    print(j)

print(list(range(5)))
print(list(range(1,5)))