当前位置: 首页 > news >正文

Python操作list列表合并

需求就是在操作一个list的数据集的时候,需要将其中的所有的元素的第一位数据合并,再合并第二位数据

如果是存在A 和A-B就都统一为A-B

统一了之后,再顺便将每一个list中的第二位元素合并相加

# *===================================*
# -*- coding: utf-8 -*-
# * Time : 2019-11-10 22:06
# * Author : zhangsf
# *===================================*
#将两部分的list数据汇总key相同的部分合并一下,保证最终导入到Excel表中的key唯一
def MergeData(data):
    for item in data:
        # print(item[0], item[1])
        for tmp in data:
            if item[0].__contains__(tmp[0]) or tmp[0].__contains__(item[0]):
                if len(item[0]) >= len(tmp[0]):
                    tmp[0] = item[0]
                else:
                    item[0] = tmp[0]
    print("******************************")
    for i in data:
        print(i)
    print("******************************")
    empty_dict = dict()
    for d in data:
        print(d[0])
        a=list(d[1])
        #判断字典中是否存在key存在就更新value,否则添加k-v
        if(empty_dict.__contains__(d[0])):
            empty_dict[d[0]][0] = empty_dict[d[0]][0] +a[0]
            empty_dict[d[0]][1] = empty_dict[d[0]][1] + a[1]
            empty_dict[d[0]][2] = empty_dict[d[0]][2] + a[2]
            empty_dict[d[0]][3] = empty_dict[d[0]][3] + a[3]
            empty_dict[d[0]][4] = empty_dict[d[0]][4] + a[4]
        else:
            empty_dict[d[0]]=list(d[1])
    print("遍历字典")
    print(empty_dict)
data1=['key1',(1,0,0,1,0)]
data2=['key2-value',(0,1,0,0,1)]
data3=['key2',(1,0,0,0,0)]
data4=['key1',(0,1,0,0,1)]
data5=['key1-zhang',(0,1,0,0,1)]
data=[data1,data2,data3,data4,data5]
#变换之前的data
print("变换之前的data")
print("******************************")
for i in data:
    print(i)
print("******************************")
#变换之后的data
print("变换之后的data")
MergeData(data)

 

相关文章:

  • Python3统计代码行小工具
  • GitHub中的README.md编写
  • 使用CSDN的Markdown
  • Java爬取指定知乎问题图片
  • 爬虫是否违法
  • Mac安装VScode运行C语言
  • 基于AP的课堂辅助教学系统Web端
  • 基于AP的课堂辅助教学系统Android端
  • 基于AP的课堂辅助教学系统iOS端
  • Mac安装使用Clion运行C
  • C语言编译过程详解
  • Clion编写第一个C程序
  • C语言输入一串数据到数组中,用空格隔开回车结束
  • C语言-判断字符串b的所有字符是否都在字符串a中出现过
  • C语言:判断A+B和C的关系
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • 《剑指offer》分解让复杂问题更简单
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • 4. 路由到控制器 - Laravel从零开始教程
  • Bootstrap JS插件Alert源码分析
  • Git 使用集
  • Java 23种设计模式 之单例模式 7种实现方式
  • Java应用性能调优
  • JS笔记四:作用域、变量(函数)提升
  • Laravel5.4 Queues队列学习
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • spark本地环境的搭建到运行第一个spark程序
  • 记一次用 NodeJs 实现模拟登录的思路
  • 说说动画卡顿的解决方案
  • 新书推荐|Windows黑客编程技术详解
  • MPAndroidChart 教程:Y轴 YAxis
  • 整理一些计算机基础知识!
  • #Linux(帮助手册)
  • #pragma once与条件编译
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (分布式缓存)Redis哨兵
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (一)Thymeleaf用法——Thymeleaf简介
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .NET 反射的使用
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .NET正则基础之——正则委托
  • .sh
  • @TableLogic注解说明,以及对增删改查的影响
  • @Transient注解
  • [2544]最短路 (两种算法)(HDU)
  • [AIGC] Java 和 Kotlin 的区别
  • [AS3]URLLoader+URLRequest+JPGEncoder实现BitmapData图片数据保存
  • [CakePHP] 在Controller中使用Helper
  • [CSS]CSS 字体属性