字典是一种通过名字或者关键字引用的得数据结构,其键可以是数字、字符串、元组,这种结构类型也称之为映射.字典类型是Python中唯一内建的映射类型,基本的操作包括如下:
(1)len():返回字典中键—值对的数量;
(10)has_key函数:检查字典中是否含有给出的键
(11)items和iteritems函数:items将所有的字典项以列表方式返回,列表中项来自(键,值),iteritems与items作用相似,但是返回的是一个迭代器对象而不是列表
第一段:字典的创建
①1 直接创建字典
printd
printd['two']
printd['three']
运算结果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======
printu'items中的内容:'
printitems
printu'利用dict创建字典,输出字典内容:'
d=dict(items)
printu'查询字典中的内容:'
printd['one']
items中的内容:
利用dict创建字典,输出字典内容:
查询字典中的内容:
或者通过关键字创建字典
printu'输出字典内容:'
输出字典内容:
第二段:字典的格式化字符串
print"three is %(three)s."%d
第三段:字典方法
d.clear()
{}
请看下面两个例子
d={}
dd=d
d['one']=1
printdd
printu'初始X字典:'
printx
printu'X复制到Y:'
y=x.copy()
printu'Y字典:'
printy
printu'修改Y中的值,观察输出:'
printu'删除Y中的值,观察输出'
y['test'].remove('c')
初始X字典:
X复制到Y:
Y字典:
修改Y中的值,观察输出:
删除Y中的值,观察输出
注:在复制的副本中对值进行替换后,对原来的字典不产生影响,但是如果修改了副本,原始的字典也会被修改.deepcopy函数使用深复制,复制其包含所有的值,这个方法可以解决由于副本修改而使原始字典也变化的问题.
fromcopyimportdeepcopy
x={}
x['test']=['a','b','c','d']
z=deepcopy(x)
printu'输出:'
printz
printu'修改后输出:'
x['test'].append('e')
运算输出:
输出:
{'test': ['a','b','c','d']}
修改后输出:
{'test': ['a','b','c','d','e']}
d=dict.fromkeys(['one','two','three'])
{'three':None,'two':None,'one':None}
或者指定默认的对应值
d=dict.fromkeys(['one','two','three'],'unknow')
{'three':'unknow','two':'unknow','one':'unknow'}
printd.get('one')
printd.get('four')
None
注:get函数可以访问字典中不存在的键,当该键不存在是返回None
printd.has_key('one')
printd.has_key('four')
True
False
list=d.items()
forkey,valueinlist:
printkey,':',value
one :1
it=d.iteritems()
fork,vinit:
print"d[%s]="%k,v
d[one]=1
printu'keys方法:'
list=d.keys()
printlist
printu'\niterkeys方法:'
it=d.iterkeys()
forxinit:
keys方法:
['three','two','one']
iterkeys方法:
three
two
one
d.pop('one')
d.popitem()
printd.setdefault('one',1)
d={
}
x={'one':1}
d.update(x)
printd.values()
'''
按照我个人的理解:
但是即使是在label弹出显示之后调用sleep函数(我也试过了),还有一个问题,就是sleep是阻塞式执行的,sleep完之前用户进行不了任何操作,UI也无法更新,必须要等到sleep做完了才能发生.
所以我另外开了一个线程,用于延迟,延迟完成之后通过回调函数通知UI进行更新.
如果有说的不对的地方,请高手指点.
from?Tkinter?import?*
import?time
import?threading
#计时线程?用于延时
class?MyThread(threading.Thread):
#?sleeptime为需要延迟的时间
#?callback为延迟结束后触发的回调函数
def?__init__(self,id,sleeptime,callback):
threading.Thread.__init__(self)
self.id=id
self.callback?=?callback
self.sleeptime?=?sleeptime
#?重写线程run函数
def?run(self):
time.sleep(self.sleeptime)
#?延时完成后传入回调函数
self.callback()
class?Example(Frame):
def?__init__(self,?parent):
Frame.__init__(self,?parent)
self.parent?=?parent
self.label?=?None
self.initUI()
#初始化窗体
def?initUI(self):
self.label?=?Label(self,?text='1')
self.label.bind('Visibility',self.onVis)
self.label.pack()
self.parent.title("Label")
self.pack()
#在label显示后进行调用
def?onVis(self,*args):
print?"Label?Visible!"
#?创建一个新的线程用于延迟,并且传入changeText作为回调函数
t.start()
#在延迟完成后进行调用,与Mythread的callback绑定
def?changeText(self):
self.label.config(text?=?'10')
window?=?Tk()
app?=?Example(window)
window.mainloop()
检查调用语句和函数定义.
函数要先定义才能调用,如果函数已经定义则检查调用语句是否出错,仔细分析报错原因.
以上就是土嘎嘎小编为大家整理的python更新函数内容相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!