python-7 dict



dict 去重,存放后面的值。key不可为list,value可为list。



dict() 里使用这种写法语法不对,需标识符,‘1’ 和 1 不是标识符。















set 设置,如果没kv对,则使用当前这个key构建一个kv对,value没写用 None并返回当前的value值;如果有kv对,返回原本的value值。








‘b’ 需先定义 value存放的是引用地址


删除是把引用计数减一,当引用计数清零后,在适当时机垃圾回收机制启动,发现这个引用计数为零,标记为垃圾并将其清理掉。



















for 里面允许修改值,但长度不能变化。使用到keys values items ,就不能进行kv对增加和kv对减少













从3.6 按录入序记录,但实际hash值千差万别





from collections import defaultdict
num = ' 00000147923522462300572245063134543617 '.strip().lstrip('0')
d1 = defaultdict(int)
for k in num:
d1[k] += 1
print(d1)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
num = ' 00000147923522462300572245063134543617 '.strip().lstrip('0')
counter = {}
# for c in num:
# if c in counter.keys():
# counter[c] += 1
# else:
# counter[c] = 1
# for c in num: # O(n)
# if not c in counter.keys(): #O(1)
# counter[c] = 0
# counter[c] += 1
for c in num:
counter[c] = counter.get(c, 0) + 1
print(counter)

from collections import defaultdict,OrderedDict
import random
l1 = []
d1 = defaultdict(int)
for i in range(100):
l1.append(random.randint(-1000,1000))
l1.sort()
for k in l1:
d1[k] += 1
print(d1)

import random
# nums = []
# for i in range(100):
# nums.append(random.randint(-1000,1000)
n = 100
nums = [None] * n
for i in range(n):
nums[i] = random.randint(-1000,1000)
counter = {}
for x in nums:
counter[x] = counter.get(x, 0) + 1
# keys = list(counter.keys())
# keys.sort()
# for k in keys:
# print(k, counter[k])
keys = sorted(counter.keys())
for k in keys:
print(k, counter[k])
# sorted 返回一个新的列表
print(sorted(counter.items())) # 默认情况会以二元组的索引0的数据排序

from collections import defaultdict
import random
alphabet = 'abcdefghijklmnopqrstuvwxyz'
l1 = []
d1 = defaultdict(int)
# char = random.choice(alphabet) #随机取一个字符
# print(char)
for i in range(100):
char = "".join(random.sample(alphabet,2)) # 随机取指定个数的字符
l1.append(char)
sorted(l1,reverse=True)
for k in l1:
d1[k] += 1
print(d1)

import random
alphabet = 'abcdefghijklmnopqrstuvwxyz'
names = []
for i in range(100):
names.append(random.choice(alphabet) + random.choice(alphabet)) # 同一个字符可以取两次
# names.append("".join(random.sample(alphabet, k=2))) # 同一个字符只取一次
counter= {}
for name in names:
counter[name] = counter.get(name, 0) + 1
print(sorted(counter.items(), reverse=True))


浙公网安备 33010602011771号