python制作英语字典(如何用python做字典)
Python中创建字典的几种方法总结
1.传统的文字表达式:
?d={'name':'Allen','age':21,'gender':'male'}
?d
{'age':?21,?'name':?'Allen',?'gender':?'male'}
如果你可以事先拼出整个字典,这种方式是很方便的。
2.动态分配键值:
?d={}
?d['name']='Allen'
?d['age']=21
?d['gender']='male'
?d
{'age':?21,?'name':?'Allen',?'gender':?'male'}
如果你需要一次动态地建立一个字典的一个字段,那么这种方式比较合适。
字典与列表不同,不能通过偏移量进行复制,只能通过键来读取或赋值,所以也可以这样为字典赋值,当然访问不存在的键会报错:
?d[1]='abcd'
?d
{1:?'abcd',?'age':?21,?'name':?'Allen',?'gender':?'male'}
?d[2]
Traceback?(most?recent?call?last):
??File?"pyshell#9",?line?1,?in?moduled[2]
??KeyError:?212345678
3.字典键值表
?c?=?dict(name='Allen',?age=14,?gender='male')
?c
{'gender':?'male',?'name':?'Allen',?'age':?14}
因为这种形式语法简单,不易出错,所以非常流行。
这种形式所需的代码比常量少,但是键必须都是字符串才行,所以下列代码会报错:
?c?=?dict(name='Allen',?age=14,?gender='male',?1='abcd')
SyntaxError:?keyword?can't?be?an?expression
4.字典键值元组表
?e=dict([('name','Allen'),('age',21),('gender','male')])
?e
{'age':?21,?'name':?'Allen',?'gender':?'male'}
如果你需要在程序运行时把键和值逐步建成序列,那么这种方式比较有用。
5.所有键的值都相同或者赋予初始值:
?f=dict.fromkeys(['height','weight'],'normal')
?f
{'weight':?'normal',?'height':?'normal'}
Python字典创建、基本操作以及常用方法
创建一个空字典自需要一对大括号即可,从已有的键-值对映射或关键字参数创建字典需要使用 dict 函数(类)
把一个列表转为字典,列表的每一项都是长度为2的序列。
还可使用 关键字实参 (**kwargs)来调用这个函数,如下所示:
字典的基本操作与序列十分相似:
字典与序列的不同:
方法 clear 删除所有的字典项(key-value)。
复制,得到原字典的一个新副本。
效果等同于调用 dict(d) 创建新字典。
copy() 执行的是 浅复制 ,若字典的值是一个可变对象,那么复制以后,相同一个键将关联到同一个对象,修改该对象,将同时修改两个字典。
模块copy中的函数deepcopy 可执行深复制。
方法fromkeys 创建一个新字典,其中包含指定的键,且每个键对应的值都是None,或者可以提供一个i额默认值。
方法get 为访问字典项提供了宽松的环境。通常,如果你试图访问字典中没有的项,将引发错误,而get直接返回None,或者可设置默认返回值。
当字典中不存在指定键时, setdefault(k,v) 添加一个指定键-值对;且返回指定键所关联的值。
这三个方法返回值属于一种名为 字典视图 的特殊类型。字典视图可用于迭代。另外,还可确定其长度以及对其执行成员资格检查。
这三个方法自大的特点是不可变,当你的接口试图对其他用户提供一个只读字典,而不希望他们修改的时候,这三个方法是很有用的;而且当原字典发生改变时,这些方法返回的对象也会跟着改变。
方法 pop 可用于获取与指定键相关联的值,并将该键-值对从字典中删除。
popitem随机删除一个键-值对,并返回一个二维的元组 (key, value) ,因为字典是无序的,所以其弹出的顺序也是不确定的。
书上说,这个方法在大数据量时执行效率很高,但没有亲测。
方法update 使用一个字典中的项来更新另一个字典。
三道Python题目求助!
#第二题:
#没有办法写缩进,看不了下载图片
dictionary?=?{}
while?True:
response?=?str(input("您要查询、添加、删除还是退出字典:?"))
if?response?==?"查询":
search_response?=?str(input("您要查询什么:?"))
if?search_response?in?dictionary:
print(search_response?+?":?"?+?dictionary[search_response])
elif?response?==?"添加":
add_response_name?=?str(input("您要创建新词的名字:?"))
if?add_response_name?in?dictionary:
add_conform?=?str(input("单词已存在!您要更改吗(要/不要):?"))
if?add_conform?==?"要":
add_response_value?=?str(input("您要创建新词的意思:?"))
dictionary[add_response_name]??=?add_response_value
print("新词已创建!")
else:
pass
add_response_value?=?str(input("您要创建新词的意思:?")
dictionary[add_response_name]?=?add_response_value
print("新词已创建!")
elif?response?==?"删除":
delete_response?=?str(input("您要删除哪个词:?"))
if?delete_response?not?in?dictionary:
print("该词不在词典内!")
else:
del?dictionary[delete_response]
print("该词已删除!")
else:
print("程序已退出!")
break