广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python字典嵌套字典实例
  • 356
分享到

python字典嵌套字典实例

字典嵌套实例 2023-01-31 02:01:54 356人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

日志文件样式:2018-06-27 09:07:37 Postman[INFO]: [1530061656f8lda-7M5E9] from: <lilh@test.com><router>, to: <xie

日志文件样式:

2018-06-27 09:07:37 Postman[INFO]: [1530061656f8lda-7M5E9] from: <lilh@test.com><router>, to: <xiey@test.com,zhengj@test.com>, size: 22018
2018-06-27 09:07:37 Postman[INFO]: [1530061656f8lda-7M5E9] system rule send: pass filter
2018-06-27 09:07:37 Postman[INFO]: [1530061656f8lda-7M5E9] system rule recv: pass filter
2018-06-27 09:07:37 Postman[INFO]: [1530061656f8lda-7M5E9] user rule [xiey@test.com]: pass filter
2018-06-27 09:07:37 Postman[INFO]: [1530061656f8lda-7M5E9] user rule [xiey@test.com] result : True [] False
2018-06-27 09:07:37 Postman[INFO]: [1530061656f8lda-7M5E9] save file to: INBOX (xiey@test.com)
2018-06-27 09:07:37 Postman[INFO]: [1530061656f8lda-7M5E9] deliver mail to : xiey@test.com
2018-06-27 09:07:37 Postman[INFO]: [1530061656f8lda-7M5E9] user rule [zhengj@test.com]: pass filter
2018-06-27 09:07:37 Postman[INFO]: [1530061656f8lda-7M5E9] user rule [zhengj@test.com] result : True [] False
2018-06-27 09:07:37 Postman[INFO]: [1530061656f8lda-7M5E9] save file to: INBOX (zhengj@test.com)
2018-06-27 09:07:37 Postman[INFO]: [1530061656f8lda-7M5E9] deliver mail to : zhengj@test.com
2018-06-27 09:07:37 Postman[INFO]: [1530061656f8lda-7M5E9] add reply task: xiey@test.com (AhKz9)
2018-06-27 09:07:37 Postman[INFO]: wx_notify_worker start
2018-06-27 09:07:37 Postman[INFO]: wx_notify_worker finish
2018-06-27 09:07:37 Postman[INFO]: program quit
2018-06-27 09:07:45 Postman[INFO]: program start
2018-06-27 09:07:45 Postman[INFO]: [1530061664nXQwH-r98pc] from: <gxm@domain.com><router>, to: <li@ceshi.com>, size: 14371
2018-06-27 09:07:45 Postman[INFO]: [1530061664nXQwH-r98pc] system rule recv: pass filter
2018-06-27 09:07:45 Postman[INFO]: [1530061664nXQwH-r98pc] user rule [li@ceshi.com]: pass filter
2018-06-27 09:07:45 Postman[INFO]: [1530061664nXQwH-r98pc] user rule [li@ceshi.com] result : True [] False
2018-06-27 09:07:45 Postman[INFO]: [1530061664nXQwH-r98pc] 192.168.10.20 is trustip
2018-06-27 09:07:45 Postman[INFO]: [1530061664nXQwH-r98pc] save file to: INBOX (li@ceshi.com)
2018-06-27 09:07:45 Postman[INFO]: [1530061664nXQwH-r98pc] deliver mail to : li@ceshi.com
2018-06-27 09:07:45 Postman[INFO]: [1530061664nXQwH-r98pc] add reply task: li@ceshi.com (YV5Lm)
2018-06-27 09:07:45 Postman[INFO]: wx_notify_worker start
2018-06-27 09:07:45 Postman[INFO]: wx_notify_worker finish
2018-06-27 09:07:45 Postman[INFO]: program quit



脚本代码:

#!/usr/bin/pythoncoding: utf-8
import os
import re
import pprint

d = {}   #定义一个空字典


with open("/root/postman.log") as f:      #打开日志文件,并赋值给f,使用with表示完成后会自动关闭
    for line in f:          #循环读取每一行                                                                           
        m = re.search(r'\[([0-9A-Za-z-]{21})\].*size: ([0-9]+)$', line.strip())      #按照正则表达式查找id和size,strip()去除收尾空格
        if m is not None:     #假如没有返回值,即没有匹配到,然后跳出这个if语句块
            id, size = m.groups()      #返回一个元组,索引0为上面第一个正则表达式匹配到的ID值,索引1为上面第二个正则表达式匹配到的size值(m.groups() 其实等于 (m.group(1), m.group(2)))
            if id not in d:      #如果id不在字典d里面,然后初始化(recp这个初始化为列表),下一次循环的时候,同一个id就不会执行if语句块(即每个ID第一次都会初始化字典的值)
                d[id] = {
                  'size': 0,
                  'recp': []
                }
            d[id]['size'] = int(size)    #如果id存在字典中,将m.group(1)赋值给字典中size,并转换成×××
        

        m = re.search(r'\[([0-9A-Za-z-]{21})\] save file to:.*\(([^\(\)]+)\)$', line.strip())      #按照正则表达式查找id和收件人,strip()去除收尾空格
        if m is not None:      #假如没有返回值,即没有匹配到,然后跳出这个if语句块
            id, recp = m.groups()      #返回一个元组,索引0为上面第一个正则表达式匹配到的ID值,索引1为上面第二个正则表达式匹配到的收件人值(m.groups() 其实等于 (m.group(1), m.group(2)))
            if id not in d:      #如果id不在字典d里面,然后初始化(recp这个初始化为列表),下一次循环的时候,同一个id就不会执行if语句块(即每个ID第一次都会初始化字典的值)
                d[id] = {
                  'size': 0,
                  'recp': []
                }
            d[id]['recp'].append(recp)    #如果id存在字典中,将m.group(2)添加到字典中recp列表中



l = []     #定义一个空列表
for id, e in d.items():      #循环遍历字典d,得到id和e,其中e是子字典。
    total_size = e['size'] * len(e['recp']) / (1024.0 ** 2)     #所以同一个id的总容量=大小*recp的长度即数量,再由B换算成M
    l.append((id, len(e['recp']), total_size))      #将这三个值(id、收件人数量、总容量),作为一个元素添加到列表



print("\n")
print(">>>>>>>>>>>>>>>统计每隔ID产生的收件人数量和总容量(TOP20)>>>>>>>>>>>>>>>")
#l.sort(key=lambda x: x[2], reverse=True)      #给l列表排序下,以列表索引值2为排序条件

def key_func(x):
    return x[2]
l.sort(key=key_func, reverse=True)

'''
函数作为参数

key_func(l[0]) -> 123
key_func(l[1]) -> 456

函数作为返回值
'''

for id, recp_num, total_size in l[:20]:      #取前排序后的前20个元素,然后循环并按照下面的格式打印出来
    print('邮件id为{},收件人数量为{}个,总大小为{}M'.fORMat(id,recp_num,total_size))


字典样式:

{'1530028804NYIxH-Si3rT': {'recp': [], 'size': 165241}, '1530028863UJOjD-1AxwS': {'recp': [], 'size': 3007}, '1530028818QBDbP-KLgft': {'recp': [], 'size': 85981}}


运行结果:

图片.png


--结束END--

本文标题: python字典嵌套字典实例

本文链接: https://www.lsjlt.com/news/187086.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python字典嵌套字典实例
    日志文件样式:2018-06-27 09:07:37 Postman[INFO]: [1530061656f8lda-7M5E9] from: <lilh@test.com><router>, to: <xie...
    99+
    2023-01-31
    字典 嵌套 实例
  • python实现字典多层嵌套
    对于字典:dict1={"a":1, "b":2, "c.1":3, "c.2":4, "d.5.2":5, "d.5.3":6, "d.4.1":7}, 将其实现多层嵌套为:dict2={'a': 1, 'b': 2, 'c'...
    99+
    2023-01-31
    嵌套 多层 字典
  • python3--字典,字典的嵌套,概念:分别赋值
      字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必...
    99+
    2023-01-30
    字典 嵌套 赋值
  • python中的字典及嵌套遍历
    目录python字典及嵌套遍历访问字典里的值修改字典删除字典元素嵌套字典遍历与内置函数字典的常用方法(定义、新增、删除、更新、遍历、嵌套等)什么是字典?为什么需要字典?字典总结pyt...
    99+
    2023-05-19
    python字典 python嵌套遍历 python遍历
  • python字典和列表嵌套用法
    本篇内容主要讲解“python字典和列表嵌套用法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python字典和列表嵌套用法”吧!python中字典和列表的使用,在数据处理中应该是最常用的,这两...
    99+
    2023-06-20
  • python嵌套字典比较值与取值的实现示例
    前言 本文通过示例给大家介绍了python嵌套字典比较值,取值,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。 示例代码 #取值import types allGuests = {'A...
    99+
    2022-06-04
    嵌套 示例 字典
  • python 字典和列表嵌套用法详解
    目录列表(List)常用方式字典(dictionary)常用方式组合使用列表嵌套列表列表嵌套字典字典嵌套字典字典嵌套列表嵌套什么时候用参考文献python中字典和列表的使用,在数据处理中应该是最常用的,这两个熟练后基...
    99+
    2022-06-02
    python 字典和列表嵌套 python 列表嵌套
  • python如何提取列表嵌套字典的值
    要提取列表嵌套字典中的值,可以使用循环结构来遍历列表和字典,并使用字典的键来访问对应的值。以下是一个示例代码:```pythonda...
    99+
    2023-09-26
    python
  • 如何利用python实现列表嵌套字典取值
    目录一、实例二、解决思路三、代码示例一、实例 将以下列表的backup_unit_id全部提取出来 示例: dbs = [{         "backup_unit_id": 16...
    99+
    2022-11-11
  • 怎么利用python实现列表嵌套字典取值
    这篇文章主要介绍了怎么利用python实现列表嵌套字典取值的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么利用python实现列表嵌套字典取值文章都会有所收获,下面我们一起来看看吧。一、实例将以下列表的bac...
    99+
    2023-07-02
  • 浅谈Python列表嵌套字典转化的问题
    在看视频教程的时候提到了[{'a' : 97}, {'b' : 98}, {'c' : 99}, {'d' : 100}, {'e' : 101}, ...........]形式的列...
    99+
    2022-11-12
  • python之如何查找多层嵌套字典的值
    目录python查找多层嵌套字典的值python字典的多层嵌套,如何快速定位到需要的数据另一种方法,下载一个jsonpath包$..key5总结python查找多层嵌套字典的值 de...
    99+
    2023-05-19
    python嵌套字典 python字典多层嵌套 多层嵌套字典
  • Python多维/嵌套字典数据无限遍历的实现
    最近拾回Django学习,实例练习中遇到了对多维字典类型数据的遍历操作问题,Google查询没有相关资料…毕竟是新手,到自己动手时发现并非想象中简单,颇有两次曲折才最终实现效果,将过程记录下来希望对大家有用...
    99+
    2022-06-04
    多维 遍历 嵌套
  • Python 避免字典和元组的多重嵌套问题
    目录一、字典、元组的多重嵌套二、嵌套结构重构为类一、字典、元组的多重嵌套 例 1:记录全班学生的成绩。 分析:定义一个 SimpleGradebook类, 学生名是字典self._g...
    99+
    2022-11-11
  • Python怎么避免字典和元组的多重嵌套
    本文小编为大家详细介绍“Python怎么避免字典和元组的多重嵌套”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python怎么避免字典和元组的多重嵌套”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、字典、元组...
    99+
    2023-07-02
  • python字典
    所不同的是列表的索引只是从0开始的有序整数,不可重复;而字典的索引实际上在字典里应该叫键,虽然字典中的键和列表中的索引一样是不可重复的,但键是无序的,也就是说字典中的元素是没有顺序而言的,字典中的元素任意排列但不影响字典的使用字典的键可以是...
    99+
    2023-01-30
    字典 python
  • python 字典
    一、什么是字典   字典是一种可变容器模型,且可存储任意类型对象。字典的每个键值对(key->value)用冒号“:”分割,每个键值对之间用逗号“,”分割,整个字典包括在花括号“{}”中   注意:键必须使用不可变类型即整形、字符串...
    99+
    2023-01-30
    字典 python
  • python---字典
    #字典是key-value的数据类型,字典是无序的,没有下标(列表有下标),key必须是唯一的info = {     "stu001":"fengxiaoli",     "stu002":"cx",     "stu003":"wyc"...
    99+
    2023-01-31
    字典 python
  • python - 字典
    *********************字典******************字典是python中唯一的映射类型,key-value(哈希表),字典对象是可变的,但key必须用不可变对象。字典是无序的。*)字典的创建1.赋值创建字典,k...
    99+
    2023-01-31
    字典 python
  • python中字典和列表的相互嵌套问题详解
    目录1.列表中存储字典:1.列表中存储多个字典2.访问列表中字典的值3.遍历访问多个值2.字典中存储列表1.访问字典中的列表元素2.访问字典中的值(字典中的值为列表)3.字典中存储字...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作