字典的相关知识

本文介绍了Python编程中对字典的各种操作,包括根据数字和排序字符串、按姓名和成绩排序、统计单词频率、生成特定格式的字符串、理解字典的特性和常用方法,以及如何进行字典的键值互换。同时,提供了多个示例来展示如何使用字典的get、update、setdefault等方法,并展示了如何从字符串中解析出字典结构。最后,给出了几个练习题,涉及将列表元素转化为字典键值对以及处理字符串数据成字典。
摘要由CSDN通过智能技术生成

#按照字符串每个数字的和进行排序:
#s="11 22 33 44 394 55" 得到“11 22 33 44 55 394”

s="11 22 33 44 394 55"
def sum_(num):
    r=0
    for n in num:
        r += int(n)
    return (r)
print(" ".join(sorted(s.split(),key=sum_)))
 

#L中分别按照学生姓名和学生成绩排序
L=[('Bob',75),('Adam',92),('Bart',66),('Lisa',88)]
print(sorted(L,key=lambda x:x[0]))
print(sorted(L,key=lambda x:x[1]))

#统计一个字符串中的每个单词出现的次数
s="i am a boy a good boy a bad boy"

item_count={}
s_list=s.split()
for word in s_list:
    item_count[word]=s_list.count(word)
print(item_count)

#第二种方法
s="i am a boy a good boy a bad boy"
item_count={}
s_list=s.split()
for word in s_list:
    if word not in item_count:
        item_count[word]=1
    else:
        item_count[word]+=1
print(item_count)
 

#生成["z1","y2","x3","w4","v5"]
#大写A-Z 65-90 a-z 97-122 数字48-57
res=[]
for i in range(1,6):
    item=chr(122-i+1)+str(i)
    res.append(item)
print(res)
 

print([chr(123-i)+str(i)for i in range(1,6)])

字典的两个特性:key是唯一的 不可重复的;key必须为不可变元素

不可变元素:数字 字符串 集合

可变元素:字典 列表 集合set{} 改变值的同时,id不变

{} key value键值对

可通过赋值的方式来添加key和value

>>> d['a']=97

>>> d

{'a': 97}

删除 del d["a"]

d.pop(key)--删除某个键值对 并返回它的value

 d.popitem() 删除并返回某一个键值对

d.clear() 清空元素 id(d)存在

del d 删除

修改:d['c']=100 直接赋值

访问 d['a']

slice 切片

>>> d

{'b': 90, 10: 10, 10.25: 10.25, 'a,b,c': 100, 'x': [1, 2, 'X']}

>>> d["x"]

[1, 2, 'X']

>>> d["x"][0]

1

key 不能为列表

>>> d.keys()

dict_keys(['b', 10, 10.25, 'a,b,c', 'x'])

>>> d.values()

dict_values([90, 10, 10.25, 100, [1, 2, 'X']])

>>> d.items()

dict_items([('b', 90), (10, 10), (10.25, 10.25), ('a,b,c', 100), ('x', [1, 2, 'X'])])

遍历key

>>> for key in d:

...     print(key)

>>> for key in d.keys():

...     print(key)

遍历value

>>> for value in d.values():

...     print(value)

遍历键值对

>>> for key_value in d.items():

...     print(key_value)

>>> for key,value in d.items():

...     print("key:",key)

...     print("value:",value)

#练习
#把一个字典的key value互相交换
d={'a':97,'b':98,'c':100}
res={}
for key,value in d.items():
    if not isinstance(value,(list,dict,set)):
        res[value]=key
print(res)
 

字典推导式:

{lst[i],lst[i+1]  for i in range(0,len(lst),2)}

下标 index

#有一个列表 把偶数下标位置元素作为key,奇数下标位置元素作为value,生成一个字典
lst=["a",97,"b",98,"c",99,(1,2,3),[1,2,3]]
dic={}
for index in range(len(lst)):
    if index%2==0:
        dic[lst[index]]=lst[index+1]#类似d['a']=97
print(dic)

字典

>>> list(zip([1,2,3],[4,5,6]))

[(1, 4), (2, 5), (3, 6)]

>>> ls=list(zip([1,2,3],[4,5,6]))

>>> ls

[(1, 4), (2, 5), (3, 6)]

dict items 互反

>>> l=sorted(d.items(),key=lambda x:x[0])

>>> l

[('a', 97), ('b', 98), ('c', 99), ('d', 100), ('z', 122)]

>>> dict(l)

{'a': 97, 'b': 98, 'c': 99, 'd': 100, 'z': 122}

通过列表排序 再转换为字典 

>>> d.get('a')

97

字典不可以+操作

eval()函数 字符串转换成字典

exec()函数

>>> eval(str(d))

{'a': 97, 'b': 98, 'c': 99, 'z': 122, 'd': 100}

>>> max(d)

'z'

>>> len(d)

5

>>> list(d.keys()).count('b')

1

>>> d1

{'name': 'zhang', 'age': 18}

>>> d.update(d1)

>>> d

{'a': 97, 'b': 98, 'c': 99, 'z': 122, 'd': 100, 'name': 'zhang', 'age': 18}

同列表的extend()

>>> d1.setdefault('bb',100)

100

>>> d1

{'name': 'zhang', 'age': 18, 'bb': 100}

d1.setdefault

如果key值存在,返回key对应的值,即使指定value参数

如果key不存在 key value作为一个键值对加入到d字典中

定义字典的方式

1.定义空字典 d={}

2.定义有元素的字典 d={"a":1,"b":2}

3.d=dict(key1=value1,key2=value2)

4.d=dict([("a",1),("b",2)])或者 dic(zip(...))

5.d=dict.fromkeys("shjadja",10)

练习:

#写一个函数实现:两个长度相同的list,一个的元素做字典的key,一个的元素作为字典的value

def gen_dic(lst1,lst2):
    dic={}
    for i in range(len(lst1)):
        dic[lst1[i]]=lst2[i]
    return dic
lst1=list("XYZ")
lst2=list("123")
print(gen_dic(lst1,lst2))

lst1=['a','b','c','d','e']
lst2=[1,2,3,4,5]
l=list(zip(lst1,lst2))
print(dict(l))

#将字符串:“k:1|k1:2|k2:3|k3:4”,处理成python字典:{'k':1,'k1':2,'k2':3,'k3':4}

res={}

s="k:1|k1:2|k2:3|k3:4"

item_list=s.split("|")
for k_v in item_list:
    k=k_v.split(":")[0]
    v=k_v.split(":")[1]
    res[k]=v
print(res)

{k_v.split(":")[0]:k_v.split(":")[1]  for k_v in s.split("|")}

#d={"Robert":80,"Smith":90,"Mei":78,"Lily":98}
#f分别按名字的所有字母的ascii值的和排序
#成绩由高到低排序

d={"Robert":80,"Smith":90,"Mei":78,"Lily":98}
print(dict(sorted(d.items(),key=lambda x:sum([ord(c) for c in x[0]]))))
#print(dict(sorted(d.items(),key=lambda x:x[1],reverse=False)))

很高兴为您解答。以下是利用字典相关知识设计三级菜单,并实现每一级菜单间跳跃的方法: 1. 首先,我们需要定义一个字典,用来存储菜单信息。字典的键表示菜单名称,值表示下一级菜单或者操作。 2. 接着,我们需要编写一个函数,用来显示当前菜单,并等待用户输入选择。该函数需要接收一个菜单字典作为参数,并根据用户的选择返回下一级菜单或者执行相应的操作。 3. 在主程序中,我们可以使用一个循环来不断显示菜单,并根据用户的选择跳转到下一级菜单或者执行相应的操作。当用户选择退出时,循环结束。 下面是一个简单的示例代码: ```python menu = { '菜单1': { '子菜单1': { '操作1': None, '操作2': None }, '子菜单2': { '操作3': None, '操作4': None } }, '菜单2': { '子菜单3': { '操作5': None, '操作6': None }, '子菜单4': { '操作7': None, '操作8': None } } } def show_menu(menu_dict): while True: print('当前菜单:') for key in menu_dict: print(key) choice = input('请选择菜单(输入q退出):') if choice == 'q': return None elif choice in menu_dict: next_menu = menu_dict[choice] if isinstance(next_menu, dict): show_menu(next_menu) else: print('执行操作:', next_menu) else: print('无效的选择!') show_menu(menu) ``` 在上面的代码中,我们定义了一个名为menu的字典,其中包含两个一级菜单(菜单1和菜单2),每个一级菜单下面有两个二级菜单(子菜单1、子菜单2和子菜单3、子菜单4),每个二级菜单下面有两个操作。 我们编写了一个名为show_menu的函数,用来显示当前菜单,并等待用户输入选择。该函数接收一个菜单字典作为参数,并根据用户的选择返回下一级菜单或者执行相应的操作。如果用户选择退出,则返回None。 在主程序中,我们使用一个循环来不断显示菜单,并根据用户的选择跳转到下一级菜单或者执行相应的操作。当用户选择退出时,循环结束。 希望这个回答能够帮助到您,如有疑问请随时追问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值