关于交换字典的Key 和 Value 的方法:
第一种,新建一个字典,通过获取key, value后直接交换赋值。
dict_ori = {'A':1, 'B':2, 'C':3}
dict_new = {value:key for key,value in dict_ori.items()}
第二种,利用内置迭代器zip 函数, 新建字典,通过直接获取原字典的Value, Key.
dict_ori = {'A':1, 'B':2, 'C':3}
dict_new2= dict(zip(dict_ori.values(), dict_ori.keys()))
collection模块额外提供了几种高级数据类型:
namedtuple():生成可以使用名字来访问元素内容的tuple子类
from collections import namedtuple
point = namedtuple('p', ['x', 'y'])
p = point(1, 2)
print(p.x) # 1
print(p.y) # 2
# namedtuple('名称', [属性list]):
Circle = namedtuple('Circle', ['x', 'y', 'r'])
deque:双端队列,可以快速的从另外一侧追加和推出对象
from collections import deque
q= deque(['a','b','c'])
q.append('x')
q.appendleft('y')
print(q)
#deque(['y', 'a', 'b', 'c', 'x'])
counter:计数器
a = ['PHP', 'PHP', 'Python', 'PHP', 'Python', 'JS', 'Python', 'Python','PHP', 'Python']
C = dict(Counter(a)) # C1 {'JS': 1, 'PHP': 4, 'Python': 5}
ordereddict:有序字典
from collections import OrderedDict
od = OrderedDict([('a', 1), ('z', 2), ('c', 3)])
print od
d = dict([('a',1),('z',2),('c',3)])
print d
# 结果如下
OrderedDict([('a', 1), ('z', 2), ('c', 3)])
{'a': 1, 'c': 3, 'z': 2}
defaultdict:带有默认值的字典
from collections import defaultdict
dic = defaultdict(lambda :'N/A')
dic['k1'] = 'abc'
print(dic['k1']) #‘abc’
print(dic['k2']) #N/A
其中学习到一个numpy.diff(a, n=1,axis=-1)
沿着指定轴计算第N维的离散差值
参数:## 标题
a:输入矩阵
n:可选,代表要执行几次差值
axis:默认是最后一个
示例:
import numpy as np
A = np.arange(2 , 14).reshape((3 , 4))
A[1 , 1] = 8
print('A:' , A)
# A: [[ 2 3 4 5]
# [ 6 8 8 9]
# [10 11 12 13]]
print(np.diff(A))
# [[1 1 1]
# [2 0 1]
# [1 1 1]]
题目说明:
输入:language = [‘PHP’, ‘PHP’, ‘Python’, ‘PHP’, ‘Python’, ‘JS’, ‘Python’, ‘Python’,‘PHP’, ‘Python’]
输出:Python
from collections import Counter, OrderedDict
a = ['PHP', 'PHP', 'Python', 'PHP', 'Python', 'JS', 'Python', 'Python','PHP', 'Python']
def most_element(ele):
C = dict(Counter(ele))
C1 = dict(sorted(C.items(), key=lambda t: t[1]))
last = list( C1.keys())
return last[-1]
print(most_element(a)) # python
1、假设你获取了用户输入的日期和时间如2020-1-21 9:01:30,以及一个时区信息如UTC+5:00,均是str,请编写一个函数将其转换为timestamp:
import re
from dateutil import parser,tz,zoneinfo
from datetime import datetime, timezone, timedelta
def to_timdestampe(dt_str, tz_str):
dt1 = parser.parse(dt_str)
utc_group = re.match(r'([UTC]+)([+-])(\d+):(\d)', tz_str) # 字符串匹配,分组
i = int(utc_group.group(3)) # 时区数字
if utc_group.group(2) == '+': # 时区正负号
tz_utc = timezone(timedelta(hours=i))
elif utc_group.group(2) == '-':
tz_utc = timezone(timedelta(hours=-i))
dt2 = dt1.replace(tzinfo=tz_utc)
return dt2.timestamp()
print(to_timdestampe('2020-6-1 08:10:30','UTC+7:00'))
print(to_timdestampe('2020-5-31 16:10:30', 'UTC-09:00'))
# 1590973830.0
# 1590973830.0
编写Python程序以选择指定年份的所有星期日。
from dateutil import parser,tz,zoneinfo
from datetime import datetime, timezone, timedelta
def all_sundays(year):
dt = datetime(year=year, month=1, day=1).date()
start_date = 7 - dt.isoweekday()
shift_timedelta = timedelta(days= start_date)
output = []
dt1= dt + shift_timedelta
for i in range(365//7):
dt2 = (dt1 + timedelta(days= 7*i)).strftime("%Y-%m-%d")
output.append(dt2)
return output
print(all_sundays(2020))