zoukankan      html  css  js  c++  java
  • python实现取得成员所在的多个位置

    注:本代码主要是为了实现多个集合之间求并集时的辅助代码,简单的举个例子来说明代码的功能。

    约定:例如{11: [2, 3]}表示数据11在集合2和集合3中都存在。

    现有以下数据:

    d0 = {38: [2], 11: [2, 3], 22: [2, 3]}
    d1 = {11: [0, 0, 1, 3], 13: [0, 0], 22: [0, 0, 3], 14: [0, 0, 1, 3]}
    d2 = {32: [1, 1], 35: [1, 1], 11: [1, 1, 3], 14: [1, 1, 3], 23: [1, 1]}
    d3 = {33: [3], 66: [3], 11: [3], 14: [3], 22: [3], 55: [3]}
    d4 = {38: [2], 11: [2, 3], 22: [2, 3], 13: [0, 0], 14: [0, 0, 1, 3], 32: [1, 1], 35: [1, 1], 23: [1, 1], 33: [3], 66: [3], 55: [3]}  
    那么所有的元素所在的集合为:
    38: [2], 11: [2, 3, 0, 1], 22: [2, 3, 0], 13: [0], 14: [0, 1, 3], 32: [1], 35: [1], 23: [1], 33: [3], 66: [3], 55: [3] 。
    下面就是实现的代码:
     1 # encoding: utf-8
     2 
     3 def func(content):
     4     all_dict = {}
     5     for d in content:
     6         for k in d.keys():
     7             tmp_value = d[k]
     8             if k in all_dict.keys():
     9                 tmp_values = all_dict[k]
    10                 # 更新成员数
    11                 for i in range(len(tmp_value)):
    12                     if tmp_value[i] not in tmp_values:
    13                         tmp_values.append(tmp_value[i])
    14                 all_dict[k] = tmp_values
    15 
    16             if k not in all_dict.keys():
    17                 # 这里需要处理一种情况:如13: [0, 0],某个字典的值有重复的元素。
    18                 tmp_values = []
    19                 for i in range(len(tmp_value)):
    20                     tmp = tmp_value[i]
    21                     if tmp in tmp_values:
    22                         continue
    23                     tmp_values.append(tmp)
    24                 all_dict[k] = tmp_values
    25 
    26     return all_dict
    27 
    28 
    29 if __name__ == "__main__":
    30 
    31     d0 = {38: [2], 11: [2, 3], 22: [2, 3]}
    32     d1 = {11: [0, 0, 1, 3], 13: [0, 0], 22: [0, 0, 3], 14: [0, 0, 1, 3]}
    33     d2 = {32: [1, 1], 35: [1, 1], 11: [1, 1, 3], 14: [1, 1, 3], 23: [1, 1]}
    34     d3 = {33: [3], 66: [3], 11: [3], 14: [3], 22: [3], 55: [3]}
    35     d4 = {38: [2], 11: [2, 3], 22: [2, 3], 13: [0, 0], 14: [0, 0, 1, 3], 32: [1, 1], 35: [1, 1], 23: [1, 1], 33: [3], 66: [3], 55: [3]}  
    36 
    37     res = func([d0, d1, d2, d3, d4])
    38     for key in res:
    39         print (key, ':', res[key])

    输出结果为:

     1 38 : [2]
     2 11 : [2, 3, 0, 1]
     3 22 : [2, 3, 0]
     4 13 : [0]
     5 14 : [0, 1, 3]
     6 32 : [1]
     7 35 : [1]
     8 23 : [1]
     9 33 : [3]
    10 66 : [3]
    11 55 : [3] 
  • 相关阅读:
    消息分发
    subprocess.CalledProcessError: Command ‘(‘lsb_release’, ‘-a’)’ returned non-zero exit status 1.
    ubuntu14.04 安装python3.7
    通过shell脚本查看python版本并比较
    shell 小数比较大小
    python 私有方法
    python 类的倒入
    python 路径拼接
    python 脚本接受参数
    python 获取文件运行路径
  • 原文地址:https://www.cnblogs.com/mrlayfolk/p/12383519.html
Copyright © 2011-2022 走看看