Python基础 — 数据类型

5.现有字典 d= {'a':24,'g':52,'i':12,'k':33}请按value值进行排序

sorted(d.items(),key=lambda x:x[1])  # x[0]代表用key进行排序;x[1]代表用value进行排序。

        输出:

[('i', 12), ('a', 24), ('k', 33), ('g', 52)]

        加上dict(),输出为字典类型

6.字典推导式

        对于字典,它和列表、元组一样,也可以使用字典推导式来快速的生成一个字典,它的表现形式和列表推导式类似,只不过将列表推导式中的中括号[]改为大括号{}:

        {键表达式:值表达式 for 循环}

d = {key:value for (key,value) in iterable}

7.反转字符串

print("aStr"[::-1])

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

str1 = "k:1|k1:2|k2:3|k3:4" 
def str2dict(str1):
    dict1 = {}
    for iterms in str1.split('|'): 
        key,value = iterms.split(':') 
        dict1[key] = value
    return dict1
 
# 字典推导式法
d = {k:int(v) for t in str1.split("|") for k, v in (t.split(":"), )}
print(d)

9.请按alist中元素的age由大到小排序

alist = [{'name':'a','age':20},{'name':'b','age':30},{'name':'c','age':25}] 
def sort_by_age(list1):
    return sorted(alist, key=lambda x:x['age'], reverse=True)

sort_by_age(alist)

10.下面代码的输出结果将是什么?

list = ['a','b','c','d','e'] 
print(list[10:])
        代码将输出[], 不会产生 IndexError 错误,就像所期望的那样,尝试用超出成员的个数的 index 来获取某个列表的成员。例如,尝试获取 list[10] 和之后的成员,会导致 IndexError 。然而,尝试获取列表的切 片,开始的 index 超过了成员个数不会产生 IndexError ,而是仅仅返回一个空列表。这成为特别让人恶 心的疑难杂症,因为运行的时候没有错误产生,导致 Bug 很难被追踪到。

11.写一个列表生成式,产生一个公差为11的等差数列

print([x*11 for x in range(10)])

12.给定两个列表,怎么找出他们相同的元素和不同的元素?

list1 = [1,2,3]
list2 = [3,4,5] 
set1 = set(list1) 
set2 = set(list2) 
print(set1 & set2)   # 交集
print(set1 ^ set2)   # 并集

    输出:

{3}
{1, 2, 4, 5}

13.请写出一段python代码实现删除list里面的重复元素

l1 = ['b','c','d','c','a','a']
l2 = list(set(l1)) 
print(l2)
        上面不能保持原列表的顺序位置,要与原列表顺序一致,可以用list 类的 sort 方法 :
l1 = ['b','c','d','c','a','a']
l2 = list(set(l1)) 
l2.sort(key=l1.index) 
print(l2)
        也可以这样写:        
l1 = ['b','c','d','c','a','a']
l2 = sorted(set(l1),key=l1.index) 
print(l2)
        也可以用遍历:
l1 = ['b','c','d','c','a','a'] 
l2 = []
for i in l1:
    if not i in l2: 
        l2.append(i)
print(l2)

14.给定两个list AB ,请用找出AB中相同与不同的元素

A,B 中相同元素: print(set(A)&set(B)) 
A,B 中不同元素: print(set(A)^set(B))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值