Task08_模块与datetime

关于交换字典的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))
如果你想将datetime.date对象转换成datetime.datetime对象,你可以使用datetime.datetime.combine()方法。这个方法将date对象和一个time对象结合起来创建一个新的datetime对象。你可以传入date对象作为第一个参数,并使用datetime.time.min作为第二个参数,这样可以创建一个时间为午夜的datetime对象。例如,使用datetime.datetime.combine(dateobject, datetime.time.min)可以将dateobject转换成datetime.datetime对象。 另一种方法是使用datetime.date.today()来获取当前日期,然后将其与一个空的时间对象进行结合,即datetime.datetime.combine(dateobject, datetime.time())。这将创建一个当前日期且时间为午夜的datetime.datetime对象。 需要注意的是,根据你的引用,你提到的日期时间.js扩展和Javascript Date对象是与Pythondatetime模块不同的概念。因此,这里提供的方法适用于Python中的datetime模块。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [odoo python datetime.date 转datetime.datetime](https://blog.csdn.net/fqfq123456/article/details/124502493)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [datetime.js:扩展 JavaScript 日期对象](https://download.csdn.net/download/weixin_42139252/19643293)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值