• Python中2维数组/矩阵转化为字典(矩阵中第一列含有重复元素)??


    例如将a=[[3,789],[1,100],[1,102],[2,102],[1,106],[2,456]];转化为一个字典b={1:[100,102,102],2:[102,456],3:[789]}

    如果用强制转换:

    1 >>> a=[[3,789],[1,100],[1,102],[2,102],[1,106],[2,456]];
    2 >>> b=dict(a)
    3 >>> b
    4 {1: 106, 2: 456, 3: 789}
    5 >>> 

    结果显然删除了字典中重复键所对应的值;

     1 # 将列表转化为字典
     2 def listTodict():
     3     a=[[3,789],[1,100],[1,102],[2,102],[1,106],[2,456]];
     4     lenArr=len(a);
     5     # 列出第一列所有的元素值,包含重复元素
     6     firstCol=[];
     7     for i in range(lenArr):
     8         firstCol.append(a[i][0]); # [3, 1, 1, 2, 1, 2]
     9     # 列出第一列所有的不重复元素
    10     firstColNotRep=set(firstCol);    # {1,2,3}集合中元素没有顺序
    11     firstColNotRep=list(firstColNotRep); # firstColNotRep=[1,2,3]
    12     # 统计第一列所有的不重复元素的个数
    13     lenfirstColNotRep=len(firstColNotRep);
    14     b=[];c=[];
    15     for i in range(lenfirstColNotRep):
    16         b.append([firstColNotRep[i]]);  # [[1], [2], [3]]
    17     for i in range(lenfirstColNotRep): 
    18         for j in range(lenArr):
    19             if firstColNotRep[i]==a[j][0]: # firstColNotRep=[1,2,3]
    20                 print(j);
    21                 b[i].append(a[j][1]);
    22     return b;
    23 # 结果b=[[1,100,102,106],[2,102,456], [3,789]]
    24 
    25 # 怎样将[1,100,102,106]先转为[1,[100,102,106]]转化为[1:[100,102,106]]
    26 def listToDict1():
    27     d=[[1,100,102,106],[2,102,456], [3,789]];
    28     e={};
    29     for i in range(len(d)):
    30         e[d[i][0]]=d[i][1:];
    31     return e;
    32     
  • 相关阅读:
    [算法]全排列类问题
    windows下python安装Numpy和Scipy模块
    EMC校招笔试题目
    word2012写论文之参考文献和图片
    我的MBTI性格测试
    单例模式三境界
    css3滤镜Filter使用
    利用nginx 虚拟主机、请求转发实现不同端口web访问
    使用gitbook 发布一个教程文档网站
    linux 下CentOS 下 npm命令安装gitbook失败的问题
  • 原文地址:https://www.cnblogs.com/yuzhuwei/p/4089631.html
Copyright © 2020-2023  润新知