您的位置:

关于python实现一个字典的信息

本文目录一览:

用Python创建一个学生字典并可以查询其中信息

你可以试试这个----------------------------------------------------------

# -*- coding:UTF-8 -*-

students=[]

def meun():

print("="*30)

print("*"*10+"学生信息管理"+"*"*10)

print("1.添加学生信息")

print("2.删除学生信息")

print("3.指定学号查询学生信息")

print("4.查询全部学生信息")

print("5.保存信息")

print("0.退出系统")

print("="*30)

def add_new_info():

      global students

      print("您选择了添加学生信息功能")

      name = input("请输入学生姓名:")

      stuId = input("请输入学生学号(学号不可重复):")

      age = input("请输入学生年龄:")

      #验证学号是否唯一

      i = 0

      leap = 0

      for temp in students:

          if temp['id'] == stuId:

              leap = 1

              break

          else:

              i = i + 1

          if leap == 1:

              print("输入学生学号重复,添加失败!")

              break

      else:

          # 定义一个字典,存放单个学生信息

          stuInfo = {}

          stuInfo['name'] = name

          stuInfo['id'] = stuId

          stuInfo['age'] = age

          # 单个学生信息放入列表

          students.append(stuInfo)

          print("添加成功!")

def del_info():

      global students

      print("您选择了删除学生功能")

      delId=input("请输入要删除的学生学号:")

      #i记录要删除的下标,leap为标志位,如果找到leap=1,否则为0

      i = 0

      leap = 0

      for temp in students:

         if temp['id'] == delId:

              leap = 1

              break

         else:

             i=i+1

      if leap == 0:

          print("没有此学生学号,删除失败!")

      else:

          del students[i]

          print("删除成功!")

def search_info():

  global students

  searchID=input("请输入你要查询学生的学号:")

   

      #验证是否有此学号

  i = 0

  leap = 0

  for temp in students:

      if temp['id'] == searchID:

          leap = 1

          break

      else:

          i = i + 1

  if leap == 0:

      print("没有此学生学号,查询失败!")

  else:

      print("找到此学生,信息如下:")

      print("学号:%s\n姓名:%s\n年龄:%s\n"%(temp['id'],temp['name'],temp['age']))

def print_all_info():

      print("序号\t\t学号\t\t姓名\t\t年龄")

      for temp in students:

              print("sno:%s,stuName:%s,stuAge:%s"  %(temp['id'],temp['name'],temp['age']))

              print("*"*20)

   

def loda_data():

#加在之前存储的数据

global students

f = open("info_data.data")

content = f.read()

info_list = eval(content)

f.close()

def main():

#加在数据(先存好数据,在打开这个数据直接读取数据)

#load_data()

while True:

#1.打印工程

meun()

#2.获取用户的选择

key = input("请输入要进行的操作):")

#3.根据用户的选择,作出相应的事件

if key == "1":

add_new_info()

elif key == "2":

del_info()

elif key == "3":

search_info()

elif key == "4":

print_all_info()

elif key == "5":

save_data()

elif key == "0":

exit_flag = input("你确定要退出吗?(yes or no)")

if exit_flag == "yes":

break

else:

print("输入有误,请重新输入。。。")

input("\n\n\n按回车键可以继续。。。")

continue

#程序开始

main()

摘自 网页链接-------------------------------------------------------------------

请采纳,谢谢

python 怎样创建一个字典

1.传统的文字表达式:

d={'name':'Allen','age':21,'gender':'male'} d

{'age': 21, 'name': 'Allen', 'gender': 'male'}123

如果你可以事先拼出整个字典,这种方式是很方便的。

2.动态分配键值:

d={} d['name']='Allen' d['age']=21 d['gender']='male' d

{'age': 21, 'name': 'Allen', 'gender': 'male'}123456

如果你需要一次动态地建立一个字典的一个字段,那么这种方式比较合适。

字典与列表不同,不能通过偏移量进行复制,只能通过键来读取或赋值,所以也可以这样为字典赋值,当然访问不存在的键会报错:

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 module

d[2]

KeyError: 212345678

3.字典键值表

c = dict(name='Allen', age=14, gender='male') c

{'gender': 'male', 'name': 'Allen', 'age': 14}123

因为这种形式语法简单,不易出错,所以非常流行。

这种形式所需的代码比常量少,但是键必须都是字符串才行,所以下列代码会报错:

c = dict(name='Allen', age=14, gender='male', 1='abcd')SyntaxError: keyword can't be an expression12

4.字典键值元组表

e=dict([('name','Allen'),('age',21),('gender','male')]) e

{'age': 21, 'name': 'Allen', 'gender': 'male'}123

如果你需要在程序运行时把键和值逐步建成序列,那么这种方式比较有用。

5.所有键的值都相同或者赋予初始值:

f=dict.fromkeys(['height','weight'],'normal') f

{'weight': 'normal', 'height': 'normal'}

python中字典的使用方法怎么样的?

字典理解如下

另一个非常有用的 Python 内建数据类型是 字典 (参见 Mapping Types — dict )。字典在某些语言中可能称为 联合内存 ( associative memories )或 联合数组 ( associative arrays )。序列是以连续的整数为索引,与此不同的是,字典以 关键字 为索引,关键字可以是任意不可变类型,通常用字符串或数值。如果元组中只包含字符串和数字,它可以作为关键字,如果它直接或间接的包含了可变对象,就不能当作关键字。不能用列表做关键字,因为列表可以用索引、切割或者 append() 和 extend() 等方法改变。

理解字典的最佳方式是把它看作无序的键: 值对 (key:value 对)集合,键必须是互不相同的(在同一个字典之内)。一对大括号创建一个空的字典: {} 。初始化列表时,在大括号内放置一组逗号分隔的键:值对,这也是字典输出的方式。

字典的主要操作是依据键来存储和析取值。也可以用 del 来删除键:值对(key:value)。如果你用一个已经存在的关键字存储值,以前为该关键字分配的值就会被遗忘。试图从一个不存在的键中取值会导致错误。

对一个字典执行 list(d.keys()) 将返回一个字典中所有关键字组成的无序列表(如果你想要排序,只需使用 sorted(d.keys()) )。[2] 使用 in 关键字(指Python语法)可以检查字典中是否存在某个关键字(指字典)。

python中,怎么做个字典,数句子中单词出现的次数?

text = raw_input("enter a sentence:")

words = text.split()

wordscount = [words.count(elem) for elem in words]

worddict={map(None,words,wordscount)}

要完成你的目标:

我要

计算每个词语出现的次数,

把词语出现的次数和词语列表组合成字典;

伪代码出来了,程序也就有了....

python有着强大的列表解析,内建模块使用C完成,他们很快,所以能够调用内建模块你就不要自己多事。

尽量按照伪代码去完成程序,除非必须细化,否则让python为你操作低层吧,他很聪明

第三句释义:

对于列表元素计数有很简单的list.count()方法。

这个语句就是利用了这个,statement for element in list fileter expression这是list的解析式。

通过这个你可以方便的将一个list解析为另一个。这一句就对list中所有的元素运用count()方法,并且建立新的list。

另外一个例子:a=[2,3,4,7,8]找到这个list中的偶数,并得到它们的平方列表

这样写:[elem*elem for elem in a if elem%2==0]

第四句释义:

list有个map方法,它可以提供list的映射。map(statement,list1,list2)就是将list1,list2按照statement规则映射。我的表达式是none所以得到的结果就是简单的[('this', 3), ('is', 4), ('a', 1)]这样的二元tuple列表。

dict函数则是针对上述list的。它能把上述list转化为字典。

这在你做数据处理时很有好处,你可以很轻松的建立一个hash表。

python的强大在于简明,遇到程序尝试着用最简单地方法去解决,你会很快喜欢上的。

以上^乐于与您交流

python怎么定义一个字典

格式 :

name = { key1 : value1 , key2 : value2 ,……}

由键值对组成,键必须是不可变数据类型组成,一般是唯一的,如果重复则会覆盖

例 :dict = { " 性别 " : " 女 " , " 年龄 " : 18}

python dict怎么实现的

Python中dict对象是表明了其是一个原始的Python数据类型,按照键值对的方式存储,其中文名字翻译为字典,顾名思义其通过键名查找对应的值会有很高的效率,时间复杂度在常数级别O(1).dict底层实现(推荐学习:Python视频教程)

在Python2中,dict的底层是依靠哈希表(Hash Table)进行实现的,使用开放地址法解决冲突.

所以其查找的时间复杂度会是O(1).

Dict的操作实现原理(包括插入、删除、以及缓冲池等)

首先介绍:PyDictObject对象的元素搜索策略:

有两种搜索策略,分别是lookdict和lookdict_string,lookdict_string就是lookdict在对于PyStringObject进行搜索时的特殊形式,那么通用的搜索策略lookdict的主要逻辑是:

(1)对第一个entry的查找:

a)根据hash值获得entry的索引

b)若entry处于unused态,则搜索结束;若entry所指向的key与搜索的key相同,则搜索成功

c)若当前entry处于dummy态,则设置freeslot(这里的freeslot是可以返回作为下一个立即可用的地址来存储entry)

d)检查Active态的entry,若其key所指向的值与搜索的值相同,则搜索成功

(2)对剩余的探测链中的元素的遍历查找:

a)根据所采用的探测函数,获得探测链上的下一个待检查的entry

b)检查到一个unused态的entry,表明搜索失败:

如果freeslot不为空,则返回freeslot;否则返回unused态的entry

c)检查entry的key与所搜索的key的引用是否相同,相同则搜索成功,返回entry

d)检查entry的key与所搜索的key的值是否相同,相同则搜索成功,返回entry

e)遍历过程中,发现dummy态的entry,且freeslot未设置,则设置freeslot

接下来是:PyDictObject对象的元素插入与删除的策略:

需要首先用到搜索策略,搜索成功,则直接将值进行替换,搜索失败,返回unused态或dummy态的entry,设置key、value和hash值,并且根据目前插入的元素情况进行ma_table的大小的调整(调整的依据就是装载率,根据是否大于2/3来进行调整);删除也是类似,先计算hash值,然后搜索相应的entry,搜索成功,删除entry中维护的元素,将entry从Active态修改为dummy态

在PyDictObject的实现过程中,会用到缓冲池,在PyDictObject对象被销毁的时候,才开始接纳被缓冲的PyDictObject对象,定义的缓冲池可接纳的对象数量是80个,创建新PyDictObject对象的时候,如果缓冲池中有,则可以直接从缓冲池中取出使用

更多Python相关技术文章,请访问Python教程栏目进行学习!以上就是小编分享的关于python dict怎么实现的的详细内容希望对大家有所帮助,更多有关python教程请关注环球青藤其它相关文章!