数据类型练习题

#!/usr/bin/env python
# ```python
# 1.有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中
# 即: {'k1': 大于66的所有值, 'k2': 小于66的所有值}
# 小提示:按照题意这里的k1和k2对应的value必须能存多个值
#
# l = [11,22,33,44,55,66,77,88,99,90]
# k = {'k1':[], 'k2':[]}
# for i in l:
#     if i < 66:
#         k['k1'].append(i)
#     elif i == 66:
#         continue
#     else:
#         k['k2'].append(i)
# print(k)

 





# 2.简单购物车,要求如下:
# 实现打印商品详细信息,用户输入商品名和购买个数,则将商品名,价格,购买个数加入购物列表,如果输入为空或其他非法输入则要求用户重新输入  
# msg_dic={
# 'apple':10,
# 'tesla':100000,
# 'mac':3000,
# 'lenovo':30000,
# 'chicken':10,
# }
# 小提示:打印的时候即需要拿到字典的key也需要拿到对应的value
#
# msg_dic = {
#     'apple': 10,
#     'tesla': 100000,
#     'mac': 3000,
#     'lenovo': 30000,
#     'chicken': 10,
# }
#
# goods_l = []
# while True:
#     for key, item in msg_dic.items():
#         print('name:{name} price:{price}'.format(price = item,name = key))
#     #实现打印商品详细信息
#     choice = input('商品>>: ').strip()
#     #用户选择购买商品,strip格式化输入
#     if not choice or choice not in msg_dic:
#         print('输入不正确,请重新输入')
#         continue
#
#     #商品输入正确,不正确重新输入
#     count = input('购买数量>>: ').strip()
#     #输入商品的数量
#     if not count.isdigit():
#         print('输入不正确,请重新输入')
#         continue
#     #判断是不是数字
#     goods_l.append((choice, msg_dic[choice],count))
#     #追加到列表gools_l购物车里
#     print(goods_l)

 




# 3.统计s='hello alex alex say hello sb sb'中每个单词的个数
# 结果如:{'hello': 2, 'alex': 2, 'say': 1, 'sb': 2}
#
s='hello alex alex say hello sb sb'
s1={}
s2=s.split()
s3=set(s2)
for i in s3:
    s1[i]=s.count(i)
print(s1)

 




# 4.关系运算
#   有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合
#   pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'}
#   linuxs={'wupeiqi','oldboy','gangdan'}
#   1. 求出即报名python又报名linux课程的学员名字集合
#   2. 求出所有报名的学生名字集合
#   3. 求出只报名python课程的学员名字
#   4. 求出没有同时这两门课程的学员名字集合
#
pythons = {'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'}
linuxs = {'wupeiqi','oldboy','gangdan'}
print(pythons & linuxs)
print(pythons | linuxs)
print(pythons - linuxs)
print(pythons ^ linuxs)

 



# 5. 对列表l=['a','b',1,'a','a']内的元素完成去重得到新列表.
# 拔高:如果想去重并且想保持列表原来的顺序该如何做?
#
l = ['a','b',1,'a','a']
l1 = []
for i in l:
    if  i not   in l1:
        l1.append(i)
print(l1)

 



# 6.对如下列表中的元素去重(),得到新列表,且新列表一定要保持列表原来的顺序
# l=[
# {'name':'egon','age':18,'sex':'male'},
# {'name':'alex','age':73,'sex':'male'},
# {'name':'egon','age':20,'sex':'female'},
# {'name':'egon','age':18,'sex':'male'},
# {'name':'egon','age':18,'sex':'male'},
# ]  
# 小提示:去重不一定非要用集合
# ```
l = [
    {'name':'egon','age':18,'sex':'male'},
    {'name':'alex','age':73,'sex':'male'},
    {'name':'egon','age':20,'sex':'female'},
    {'name':'egon','age':18,'sex':'male'},
    {'name':'egon','age':18,'sex':'male'},
]

s = set()
l1 = []
for item in l:
    val = (item['name'], item['age'], item['sex'])
    if val not in s:
        s.add(val)
        l1.append(item)
print(l1)
    

 

posted @ 2019-07-04 18:49  小肥海  阅读(214)  评论(0编辑  收藏  举报