内容为字典的列表按其中一个字段排序并把时间改成几天前列表十个分一份

发布时间 2023-04-16 18:02:24作者: 布都御魂

# -*- coding: utf-8 -*-
# @Time : 2023/04/16 0016 14:02
# @Author : 张鑫
# @File : prac
# @Project : PyCharm 2022.1.4
import datetime
import json
import time
from operator import itemgetter

'''
题目要求
三个列表,列表长度为10,列表内容格式为字典,字典包含字段,
按标题去重,按时间倒序排列,时间格式为今天,一天前,n天前,最后结果按每十个一组分组
'''

list1 = [
{'标题': '黑月光拿稳BE剧本', '时间': '2021/11/22'},
{'标题': '万相之王', '时间': '2021/1/12'},
{'标题': '我有一剑', '时间': '2021/11/6'},
{'标题': '剑来', '时间': '2022/11/22'},
{'标题': '深空彼岸', '时间': '2021/6/22'},
{'标题': '相亲当天,豪门继承人拉着我领证', '时间': '2021/7/22'},
{'标题': '上门龙婿', '时间': '2021/1/22'},
{'标题': '盖世神医', '时间': '2021/3/22'},
{'标题': '修罗武神', '时间': '2021/9/22'},
{'标题': '九星霸体诀', '时间': '2021/12/22'},
]
list2 = [
{'标题': '黑月光拿稳BE剧本', '时间': '2021/11/22'},
{'标题': '龙王医婿', '时间': '2021/1/12'},
{'标题': '都市之最强狂兵(又名:都市狂枭)', '时间': '2021/11/11'},
{'标题': '混沌剑神', '时间': '2021/11/3'},
{'标题': '女总裁的全能兵王', '时间': '2021/11/9'},
{'标题': '踏星', '时间': '2021/11/6'},
{'标题': '执掌风云', '时间': '2021/6/22'},
{'标题': '斗罗大陆', '时间': '2021/9/22'},
{'标题': '斗破苍穹', '时间': '2021/7/22'},
{'标题': '镇国神婿', '时间': '2021/1/22'},
]
list3 = [
{'标题': '黑月光拿稳BE剧本', '时间': '2021/1/22'},
{'标题': '归路', '时间': '2021/3/12'},
{'标题': '校花的贴身高手', '时间': '2021/6/22'},
{'标题': '神秘复苏', '时间': '2021/5/22'},
{'标题': '宇宙职业选手', '时间': '2021/7/22'},
{'标题': '一世独尊', '时间': '2021/9/22'},
{'标题': '重回1990', '时间': '2021/4/22'},
{'标题': '无上神帝', '时间': '2021/8/22'},
{'标题': '完美世界', '时间': '2021/8/22'},
{'标题': '逆天邪神', '时间': '2023/4/16'},
]
# 列表合并
list_all = list1 + list2 + list3
print(f'列表总长:***{len(list_all)},{list_all}')
# 新建一个空列表,用来储存去重后的数据
# 储存原列表里的数据
list_none = []
# 储存值,用于判断将要插入的数据是否存在
list_quchong = []
# 遍历原来的总列表
for li in list_all:
# 通过标题去重
li1 = li['标题']
# 把格式为%Y/%m/%d的时间转变为时间戳
li2 = str(int(time.mktime(time.strptime(li['时间'], '%Y/%m/%d'))))
# 遍历用于去重的列表
if li1 not in list_quchong:
li['标题'] = li1
li['时间'] = li2
# 把标题不重复的整条数据放进去
list_none.append(li)
# 把去重字段放进去
list_quchong.append(li1)
else:
print(f'重复数据{li}')
print(f'去重后列表总长:{len(list_none)},{list_none}')
# 列表排序,itemgetter(用于排序的字段),reverse=True倒序
sort_time = sorted(list_none, key=itemgetter('时间'),reverse=True)
# 把时间戳改成几天前
today_stamp = int(time.mktime(datetime.date.today().timetuple()))
#把时间戳改成几天前
for dict1 in sort_time:
time_compare=int(today_stamp - int((dict1['时间']))) // 86400
if time_compare==0:
dict1['时间']='今天'
else:
dict1['时间'] = str(time_compare) + '天前'
print(dict1)
# 列表切割
# 每个列表长度为10
n = 10
num = 1
for i in range(0, len(sort_time), 10):
new_list = sort_time[i:i + n]
print('新列表', len(new_list), new_list)