字典知识总结及部分系习题

创建一个字典

import random
d1 = {}
for k in ‘abcdef’:
for v in range(random.randint(1,5)):
if k not in d1.keys():
d1[k] = [] #赋k值,赋v空
d1[k].append(v)
print(d1)

字典元素的访问

d = dict()
d[key]
返回key对应的值value
key不存在抛出KeyError异常

get(key,[,default]) d.get[a]
返回key对应的值value
key不存在返回缺省值,如果没有设置缺省值就返回None

setdefault(key[,default]) d.setdefault(a,0)
返回key对应的值value
key不存在,添加kv对,value设置为的default,并返回default,如果default没有设置,缺省为None

import random
nums = [random.randint(-1000,1000) for i in range(10)]
d = {}
nums.sort 语法一如下:
for x in nums:
if x not in d:
d[x] = 0
d[x] += 1
print(d)

语法二如下:
for x in nums:
if x not in d:
d[x] = 1
else:
d[x] += 1

语法三如下:
for x in nums:
d[x] = d.setdefault(x,0)+1

语法四如下:
for x in nums:
d[x] = d.get(x,0)+1

语法五如下:
from collections import defaultdict #缺省字典
d = defaultdict(lambda:0)
for x in nums:
d[x] += 1

nums = [2,4,1,3]
nums.sort() #排序列表
new = sorted(nums) #排序新列表
#sorted的输出结果必为列表
nums = {2:3,1:5}
new = sorted(nums) #输出结果为key值的排序 [1,2]
new = sorted(nums.items())
#输出结果为 [(1, 5), (2, 3)]

取26个英文字母
先定义 alphabet =‘abcde……z’

  1. alphabet =bytes(range(97,123)).decode()
  2. import string
  3. alphabet = string.ascii_lowercase
  4. import random
    random.choice(alphabet)
    #每次从原集合中抽取一个,可重复,抽出元素为字符串
    ⑤ import random
    print(random.sample(alphabet,2))
    #元素唯一,拿出来的2个元素不重复,抽出元素为列表,若想重复抽,则
    for i in range(5):
    random.sample(alphabet,1)
    #这样抽5次,可以出现重复

杨辉三角:输出前六航

triangle = [[1],[1,1]] #先写出前两行
for i in range(2,6): 从第三行开始循环
row = [1]
pre = triangle[i-1]
for j in range(i-1):
row.append(pre[j] +pre[j+1])
row.append(1)
triangle.append(row)
print(triangle)

从第一行开始
triangle = []
for i in range(6):
row = [1]
triangle.append(row)
if i == 0:continue
pre = triangle[i-1]
for j in range(i - 1):
row.append(pre[j] + pre[j + 1])
row.append(1)
print(triangle)

triangle = []
for i in range(6):
row = [1] * (i+1) #一次性开辟
triangle.append(row)
if i == 0:
continue
for j in range(i-1):
pre = triangle[i - 1]
row[j+1] = pre[j] +pre[j+1]
print(triangle)

##一次性开辟比一个一个append效率要高,对于一维列表,不会有地址相同的情况,可以随便更改一个元素,对于二维以及以上的列表,则会有数据更改冲突,例如:
a = [[1],[1]]*4
a[2][0]=5
print(a)
输出结果为:[[5], [1], [5], [1], [5], [1], [5], [1]]

求第m行的第k个元素

n = int(input(‘行数=’))
k = int(input(‘第k个元素=’))
triangle =[]
for i in range(n):
row = [1]
triangle.append(row)
if i == 0:
continue
pre = triangle[i-1]
for j in range(i-1):
a= pre[j] + pre[j+1]
row.append(a)
row.append(1)
print(triangle[n-1][k-1])

矩阵题:[[None] * N for row in range(N)]???

1 2 3 1 4 7
4 5 6 =====>> 2 5 8
7 8 9 3 6 9

a = [[1,2,3],[4,5,6],[7,8,9]]
b = [[],[],[]]
for i in range(3):
for j in range(3):
b[i].append(a[j][i])
print(b)

1 2 3 1 4
4 5 6 <====> 2 5
3 6
a = [[1,2,3],[4,5,6]]
b = [[],[],[]]
for i in range(3):
for j in range(2):
b[i].append(a[j][i])
print(b[i][j],end=’ ')
print()

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值