字典的常用操作

字典的常用操作:


dictionary={'num1':'a','num2':'b','num3':'c'}
print(dictionary ['num2' ])
#字典,Python中字典的键之间是无序的,即没有下标,通过键来取值
#b


dictionary ['num2']='B'
print(dictionary )
dictionary ['num4']='d'
print(dictionary )
#当要通过键修改相应的值时,如果存在则进行修改;
# 如要值不存,则在字典中新建相应键和值。
#{'num1': 'a', 'num2': 'B', 'num3': 'c'}
#{'num1': 'a', 'num2': 'B', 'num3': 'c', 'num4': 'd'}


del dictionary['num1']
print(dictionary )
#del是Python的内置删除方法,字典在删除时是键和值一起删除
#del要放置在要删除的前面
#{'num2': 'B', 'num3': 'c', 'num4': 'd'}

dictionary .pop('num2')
print(dictionary )
#pop也是通过删除字典的键来删除键和值
#{'num3': 'c', 'num4': 'd'}
dictionary['num1']='a'
dictionary ['num2']='b'
print(dictionary )
dictionary .popitem()
print(dictionary )
#popitem随机删除字典里的一个键和值

print(dictionary ['num1'])
print(dictionary .get('num1') )
print(dictionary .get('num7') )
#a
#a
#None
#字典查找键值时,要用get()的方法,如果对应的键不存在,
#返回None;如果使用直接调用的方法,在键不存在的情况下
# 则会报错


colege_list={
'自然科学系':{'数学教育':['数学1班','68号']},
'人文社科系':{'历史教育':['历史1班','64号']},
}
colege_list ['人文社科系']['历史教育'][1]='34号'
print(colege_list )
#{'自然科学系': {'数学教育': ['数学1班', '68号']},
# '人文社科系': {'历史教育': ['历史1班', '34号']}}
#字典中可以嵌套字典或列表,在进行修改时,如果KEY输入错误,
# 在嵌套的字典中不会创建新的KEY和VALUES,只会报错。KEY尽量不要用
#中文,因为在不同编码时可能会取不出来


print(colege_list .values() )
#dict_values([{'数学教育': ['数学1班', '68号']},
# {'历史教育': ['历史1班', '34号']}])
#把字典第一层的值Values都打印出来,不包含KEY
print(colege_list .keys() )
#dict_keys(['自然科学系', '人文社科系'])
#把字典第一层的key都打印出来,不包含values

'''
colege_list ['商务系']='商务英语':['外贸英语班','32号']'
print(colege_list )
#SyntaxError: invalid syntax
#带嵌套的Key付值时,会报错
'''
colege_list.setdefault('商务系',{'商务英语':['外贸英语班','32号']})
print(colege_list )
#{'自然科学系': {'数学教育': ['数学1班', '68号']},
# '人文社科系': {'历史教育': ['历史1班', '34号']},
# '商务系': {'商务英语': ['外贸英语班', '32号']}}
#新建Key和Values时,如果带有嵌套,则要用setdefault()
#setdefault(key,values),先到字典中找Key,若存在,则
#返回字典中的values,即不作修改;若key不存在,则在字典中
#新建一个key,并且值是values


info={1:'a',2:'b',3:'c'}
info2={1:'A',4:'d',5:'e'}
info.update(info2 )
print(info )
#{1: 'A', 2: 'b', 3: 'c', 4: 'd', 5: 'e'}
#info字典跟据info2字典进行更新,
# 两个字典存在相同key的,把info中key对应的values1更
# 新成为info2中key对应的values2即变成info中的key对
# 应的值是values2
#info2存在不与info相同的key,则把info2中所有与info不相
# 同的key,在info中新建


print(info.items())
#dict_items([(1, 'A'), (2, 'b'), (3, 'c'),
# (4, 'd'), (5, 'e')])
#items()用于把字典转换成列表


new_list=dict.fromkeys([1,2,3])
print(new_list )
#{1: None, 2: None, 3: None}
#fromkeys用于创建一个新的字典
new_list=dict.fromkeys([1,2,3],[4,5,{'name':'jc'}])
print(new_list )
#{1: [4, 5, {'name': 'jc'}], 2: [4, 5, {'name': 'jc'}],
# 3: [4, 5, {'name': 'jc'}]}
#新字典以[4, 5, {'name': 'jc'}]为每一个key对应的values
#即所有的values对应同一个内存地址
new_list[1][2]['name']='JC'
print(new_list )
#{1: [4, 5, {'name': 'JC'}], 2: [4, 5, {'name': 'JC'}],
# 3: [4, 5, {'name': 'JC'}]}
#new_list相当于copy了上面fromkeys的值,当fromkeys中的values对
#应的内存地址改变时,对应新建的new_list所有values都会变,即在所有
#新建字典中的jc都改成了JC.


for i in new_list :
print(i,new_list[i] )
'''
1 [4, 5, {'name': 'JC'}]
2 [4, 5, {'name': 'JC'}]
3 [4, 5, {'name': 'JC'}]
打印了KEY和values,如是是print(i),则只是打印key的内容
'''
for k,v in new_list.items() :
print(k,v)
'''
1 [4, 5, {'name': 'JC'}]
2 [4, 5, {'name': 'JC'}]
3 [4, 5, {'name': 'JC'}]
看起来和上面的循环一样,但是第二个循环这个比第一个循环多了一个转换成列表
的步骤,如果字典的信息量大,则会拖累机器的运行,故不建议使用第二种的循环
'''
posted @ 2020-05-04 03:10  逝水无痕L  阅读(263)  评论(0)    收藏  举报