当前位置:首页 » 编程语言 » python字典实现

python字典实现

发布时间: 2023-05-21 10:20:25

python字典键值对的添加和遍历

添加键值对
首先定义一个空字典
>>> dic={}
直接对字典中不存在的key进行赋值来添加
>>> dic['name']='zhangsan'
>>> dic
{'name': 'zhangsan'}
如果key或value都是变量也可以用这种方法
>>> key='age'
>>> value=30
>>> dic[key]=value
>>> dic
{'age': 30. 'name': 'zhangsan'}
这里可以看到字典中的数据并不是按先后顺序排列的,如果有兴趣,可以搜一搜数据结构中的——哈希表
从python3.7开始,字典按照插入顺序,实现了有序。修改一个已存在的key的值,不影响顺序,如果删了一个key后再添加该key,该key会被添加至末尾。标准json库的mp(s)/load(s)也是有序的
还可以用字典的setdefault方法
>>> dic.setdefault('sex','male')
'male'
>>> key='id'
>>> value='001'
>>> dic.setdefault(key,value)
'001'
>>> dic
{'id': '001', 'age': 30. 'name': 'zhangsan', 'sex': 'male'}

㈡ 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中字典的使用方法怎么样的

dict全称dictionary,使用键-值(key-value)存储,具有极快的查找速度。
举个例子,假设要根据同学的名字查找对应的成绩,如果用list实现,需要两个list:
names = ['Michael', 'Bob', 'Tracy']
scores = [95, 75, 85]

给定一个名字,要查找对应的成绩,就先要在names中找到对应的位置,再从scores取出对应的成绩,list越长,耗时越长。
如果用dict实现,只需要一个“名字”-“成绩”的对照表,直接根据名字查找成绩,无论这个表有多大,查找速度都不会变慢。用Python写一个dict如下:
>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
>>> d['Michael']
95

把数据放入dict的方法,除了初始化时指定外,还可以通过key放入:
>>> d['Adam'] = 67
>>> d['Adam']
67

由于一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉:
>>> d['Jack'] = 90
>>> d['Jack']
90
>>> d['Jack'] = 88
>>> d['Jack']
88

如果key不存在,dict就会报错:
>>> d['Thomas']
Traceback (most recent call last):
File "", line 1, in KeyError: 'Thomas'

要避免key不存在的错误,有两种办法,一是通过in判断key是否存在:
>>> 'Thomas' in dFalse

二是通过dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的value:
>>> d.get('Thomas')
>>> d.get('Thomas', -1)
-1
要删除一个key,用pop(key)方法,对应的value也会从dict中删除:
>>> d.pop('Bob')
75
>>> d
{'Michael': 95, 'Tracy': 85}

㈣ python 实现字典嵌套字典

from collections import defaultdict

interface_all = defaultdict(dict)
for port in porttype:
interface_all[port]['status'] = 'up'

㈤ 如何用python的字典和列表来实现学生成绩管理

下面是一个使用 Python 的字典和列表来实现学生成绩管理的简单例子。此例子实现了所有要求,但没有使用定义学生结构体类型和数组:


# 定义学生数据字典

students = []

# 定义输入函数

def input_student():

while True:

student = {}

student['id'] = input('学号: ')

student['class'] = input('班级: ')

student['name'] = input('姓名: ')

student['scores'] = []

for i in range(3):

score = input('第%d门课程成绩: ' % (i + 1))

student['scores'].append(score)

students.append(student)

if input('是否继续输入(y/n): ') != 'y':

break

# 定义求平均分函数

def average_score():

for student in students:

total = 0

for score in student['scores']:

total += score

student['average'] = total / len(student['scores'])

# 定义求最高平均分函数

def max_average():

max_student = None

max_average = 0

for student in students:

if student['average'] > max_average:

max_student = student

max_average = student['average']

return max_student

# 调用输入函数

input_student()

# 调用求平均分函数

average_score()

# 输出每个学生的3门课程平均分

for student in students:

print('学号: %s, 班级: %s, 姓名: %s, 平均分: %.2f' % (student['id'], student['class'], student['name'], student['average']))

# 调用求最高平均分函数

max_student = max_average()

# 输出最高平均分的学生信息

if max_student:

print(' 平均分最高的学生: 学号: %s, 班级: %s, 姓名: %s, 3门课程成绩: %s, 平均分: %.2f' % (max_student['id'], max_student['class'], max_student['name'], max_student['scores'], max_student['average']))


在上面的例子中,我们定义了一个学生数据字典,用于存储学生信息。然后定义了三个函数,分别用于输入学生信息、求每个学生3门课程的平均分和求平均分最高的学生。最后,在主函数中调用这三个函数,并输出结果。

㈥ Python中字典创建、遍历、添加等实用操作技巧合集

字段是Python是字典中唯一的键-值类型,是Python中非常重要的数据结构,因其用哈希的方式存储数据,其复杂度为O(1),速度非常快。下面列出字典的常用的用途.
一、字典中常见方法列表
代码如下:
#方法
#描述
-------------------------------------------------------------------------------------------------
D.clear()
#移除D中的所有项
D.()
#返回D的副本
D.fromkeys(seq[,val])
#返回从seq中获得的键和被设置为val的值的字典。可做类方法调用
D.get(key[,default])
#如果D[key]存在,将其返回;否则返回给定的默认值None
D.has_key(key)
#检查D是否有给定键key
D.items()
#返回表示D项的(键,值)对列表
D.iteritems()
#从D.items()返回的(键,值)对中返回一个可迭代的对象
D.iterkeys()
#从D的键中返回一个可迭代对象
D.itervalues()
#从D的值中返回一个可迭代对象
D.keys()
#返回D键的列表
D.pop(key[,d])
#移除并且返回对应给定键key或给定的默认值D的值
D.popitem()
#从D中移除任意一项,并将其作为(键,值)对返回
D.setdefault(key[,default])
#如果D[key]存在则将其返回;否则返回默认值None
D.update(other)
#将other中的每一项加入到D中。
D.values()
#返回D中值的列表
二、创建字典的五种方法
方法一:
常规方法
代码如下:
#
如果事先能拼出整个字典,则此方法比较方便
>>>
D1
=
{'name':'Bob','age':40}
方法二:
动态创建

代码如下:
#
如果需要动态地建立字典的一个字段,则此方法比较方便
>>>
D2
=
{}
>>>
D2['name']
=
'Bob'
>>>
D2['age']
=
40
>>>
D2
{'age':
40,
'name':
'Bob'}
方法三:
dict--关键字形式
代码如下:
#
代码比较少,但键必须为字符串型。常用于函数赋值
>>>
D3
=
dict(name='Bob',age=45)
>>>
D3
{'age':
45,
'name':
'Bob'}
方法四:
dict--键值序列
代码如下:
#
如果需要将键值逐步建成序列,则此方式比较有用,常与zip函数一起使用
>>>
D4
=
dict([('name','Bob'),('age',40)])
>>>
D4
{'age':
40,
'name':
'Bob'}

代码如下:
>>>
D
=
dict(zip(('name','bob'),('age',40)))
>>>
D
{'bob':
40,
'name':
'age'}
方法五:
dict--fromkeys方法#
如果键的值都相同的话,用这种方式比较好,并可以用fromkeys来初始化

代码如下:
>>>
D5
=
dict.fromkeys(['A','B'],0)
>>>
D5
{'A':
0,
'B':
0}
如果键的值没提供的话,默认为None
代码如下:
>>>
D3
=
dict.fromkeys(['A','B'])
>>>
D3
{'A':
None,
'B':
None}
三、字典中键值遍历方法

代码如下:
>>>
D
=
{'x':1,
'y':2,
'z':3}
#
方法一
>>>
for
key
in
D:
print
key,
'=>',
D[key]
y
=>
2
x
=>
1
z
=>
3
>>>
for
key,
value
in
D.items():
#
方法二
print
key,
'=>',
value
y
=>
2
x
=>
1
z
=>
3
>>>
for
key
in
D.iterkeys():
#
方法三
print
key,
'=>',
D[key]
y
=>
2
x
=>
1
z
=>
3
>>>
for
value
in
D.values():
#
方法四
print
value
2
1
3
>>>
for
key,
value
in
D.iteritems():
#
方法五
print
key,
'=>',
value
y
=>
2
x
=>
1
z
=>
3
Note:用D.iteritems(),
D.iterkeys()的方法要比没有iter的快的多。
四、字典的常用用途之一代替switch
在C/C++/Java语言中,有个很方便的函数switch,比如:
代码如下:
public
class
test
{
public
static
void
main(String[]
args)
{
String
s
=
"C";
switch
(s){
case
"A":
System.out.println("A");
break;
case
"B":
System.out.println("B");
break;
case
"C":
System.out.println("C");
break;
default:
System.out.println("D");
}
}
}
在Python中要实现同样的功能,
方法一,就是用if,
else语句来实现,比如:

代码如下:
from
__future__
import
division
def
add(x,
y):
return
x
+
y
def
sub(x,
y):
return
x
-
y
def
mul(x,
y):
return
x
*
y
def
div(x,
y):
return
x
/
y
def
operator(x,
y,
sep='+'):
if
sep
==
'+':
print
add(x,
y)
elif
sep
==
'-':
print
sub(x,
y)
elif
sep
==
'*':
print
mul(x,
y)
elif
sep
==
'/':
print
div(x,
y)
else:
print
'Something
Wrong'
print
__name__
if
__name__
==
'__main__':
x
=
int(raw_input("Enter
the
1st
number:
"))
y
=
int(raw_input("Enter
the
2nd
number:
"))
s
=
raw_input("Enter
operation
here(+
-
*
/):
")
operator(x,
y,
s)
方法二,用字典来巧妙实现同样的switch的功能,比如:

代码如下:
#coding=gbk
from
__future__
import
division
x
=
int(raw_input("Enter
the
1st
number:
"))
y
=
int(raw_input("Enter
the
2nd
number:
"))
def
operator(o):
dict_oper
=
{
'+':
lambda
x,
y:
x
+
y,
'-':
lambda
x,
y:
x
-
y,
'*':
lambda
x,
y:
x
*
y,
'/':
lambda
x,
y:
x
/
y}
return
dict_oper.get(o)(x,
y)
if
__name__
==
'__main__':
o
=
raw_input("Enter
operation
here(+
-
*
/):
")
print
operator(o)

㈦ python字典怎么输入模板

python字典怎么输入模板 如下,python字典赋值输入方法:通过字典赋值的方式来实现。先写变量,然后将写好的字典数据赋值给变量,简单来说就是变量=dict大括号,这样的方式来进行变量赋值,直接调用变量名就完成了对字典的使用,这个变量名就是字典的名称,它所指向的内存地址也是不会变的,唯一数据。

㈧ python-字典

1、字典:

      两大特点:无序,键唯一

      无序存储,键值对的形式存储数据

  键是唯一不可修改的,不能用列表做键

2、python中不可变类型:整形,字符串,元组

    可变类型:字渣猜典,列表

3、字典中方法:

增加:

dic1 = {'name':'alex'}

dic1 = ['age'] =18

*dic1 = {'age':18,'name':'alex'}

      dic1.setdefault() 键存在,不改动,返回字典相应键对应的值,键不存在,在字典中增加新的键值对,并返回相应的值

查找:

        通过键查找

          dic1.keys()打印字典中所有键 

  #dict1.keys['name','age']  --转换成列表:list(dic1.keys())

          dic1.values()打印字典中所有值

          dic1.items()打印所有键值对

修改:

          直接赋值

dic3= {'name':'alex','启液age':18}

dic4 = {'sex':'male','age':36}

          dic3.update(dic4)    #有相同的key,值会修改

删除:

          dic.clear()    #清空字典

          del dic['name'] #删除字典中指定键值对

          dic.pop('age')#删除字典中指定键值对,并返回该键值对的值

          dic.popitem()  #随机删除键值对,并以元组方式返回

其他操作涉及的方法:

dic1 =dict.formkeys(['host1','host2'],'test')#{'host1':'test','host2':'test'}

dic1 =dict.formkeys(['host1','host2','host3'],['test1','test2'])#{'host1':['test1','test2'],'host2':['test1','test2'],'host3':['test1','test2']}

dic1['host2'][1] = 'test3'   #{'host3':['test1''test3'],'host2':['test1''test3'],'host1':['test1''test3']}

      字典的嵌套:

      字典的排序:

      字典的遍历:

字符串的操作

a = '123'

b= 'abc'

c = a+b #123abc

c='****'.join([a,b])#123****abc

st = 'hello kitty{name} is {age}'

    st.count('l')    #2    统计元素个数

      st.captialize() #Hello kitty 首字母大写

      st.center(50,'-')#--------hello kitty --------居中

      st.endswith('tty3')#判断是否以某个内容结尾

      st.startswith('he')#判断是否以某个内容开头

      st.find('t') #8  查找第一个元素,并返回索引,不存在是返回-1

     如旁型 st.format(name  = 'alex',age= 37)#hello kitty alex is 37

      st.format_map({'name' :'alex','age':27})#hello kitty alex is 27

      st.index('t') #8 返回索引,找不到报错

‘ab'.isalnum()

'123'.isdigit()

热点内容
centos使用python 发布:2024-05-18 23:39:48 浏览:866
幻影天龙脚本 发布:2024-05-18 23:38:17 浏览:711
编程的py 发布:2024-05-18 23:36:22 浏览:73
安卓系统怎么改序列号 发布:2024-05-18 23:28:16 浏览:782
c语言中实数 发布:2024-05-18 23:21:03 浏览:894
服务器搭建题目 发布:2024-05-18 23:01:29 浏览:27
下载武装突袭后怎么进服务器 发布:2024-05-18 22:56:17 浏览:825
c语言字符串大写变小写 发布:2024-05-18 22:56:16 浏览:438
重启删除的文件夹 发布:2024-05-18 22:34:11 浏览:638
视频软件源码 发布:2024-05-18 22:22:24 浏览:429