码迷,mamicode.com
首页 > 其他好文 > 详细

字典经典习题

时间:2019-03-21 10:33:24      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:第一个   print   解法   一个   span   试题   img   str   形式   

1.有字符串 "k:1|k1:2|k2:3|k3:4" 处理成字典 {‘k‘:1,‘k1‘:2....} 

技术图片
1 # 转换成字典(面试题) 这里面主要就是一个切割
2 str1 = "k:1|k1:2|k2:3|k3:4"
3 dic = {}
4 lst = str1.split("|")
5 for l in lst:
6     lst2 = l.split(":")
7     dic[lst2[0]] = lst2[1]
8 print(dic)
View Code

2.元素分类:有如下值li= [11,22,33,44,55,66,77,88,99,90],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。

即: {‘k1‘: 大于66的所有值列表, ‘k2‘: 小于66的所有值列表}
# 解法1 最撮

技术图片
1 # 最直接的先初始化两个key 如果全部在一边就不太好
2 dic = {k1: [], "k2": []}
3 li = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
4 for num in li:
5     if num > 66:
6         dic["k1"].append(num)
7     else:
8         dic["k2"].append(num)
9 print(dic)
View Code

# 解法2 get方法

技术图片
 1 dic = {}
 2 for num in li:
 3     if num > 66:
 4         if dic.get("k1") == None:
 5             dic["k1"] = [num]
 6             # 第一次指定key1的值得时候,一定要是列表的形式
 7 
 8         else:
 9             dic["k1"].append(num)
10             # 进入列表就是append
11     else:
12         if dic.get("k2") == None:
13             dic["k2"] = [num]
14         else:
15             dic["k2"].append(num)
16 
17 print(dic)
View Code

#解法3 setdefault 对get的进一步抽象

技术图片
1 dic = {}
2 for num in li:
3     if num < 66:
4         dic.setdefault(key1, []).append(num)
5     else:
6         dic.setdefault(key2, []).append(num)
7 print(dic)
View Code

 

字典经典习题

标签:第一个   print   解法   一个   span   试题   img   str   形式   

原文地址:https://www.cnblogs.com/gaofeng-d/p/10569831.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!