【问题标题】:How to process multidimension array using Python?如何使用 Python 处理多维数组?
【发布时间】:2021-06-09 01:53:24
【问题描述】:

我想处理一个多维数组。

这是我的数组:

DefaultName = ["AB", "BC", "CD"]
DefaultCode = ["1D", "2D", "3D"]

Name = ["AB", "BC", "CD"]
Code = ["11","12", "13"]

从上面的那些数组中,每个DefaultName 值都属于DefaultCode 值。例如,

DefaulCode "1D" belongs to DefaultName "AB" and so on.

同样适用于数组NameCodeCode的每个值都属于Name

Code "11" belongs to Name "AB" and so on.

我的问题是Code 的长度与Name 的长度不同。是这样的:

Name = ["AB", "BC", "CD"]
Code = [None ,"12", "13"]

AB 的值为无。所以我需要通过映射Name 来查找Name 中的NameCode

在这种情况下,我的预期是,AB 将具有来自DefaultCodeCode,即1D,因为1D DefaultName 与代码的名称相同。

我试过这个,但我被困在映射空代码的名称以及如何查找 DefaultCode 的部分。

if (len(Name)) == (len(Code)):
    print("There is no empty code")
else:
    print("There is empty code")
    # looking for the Name that does not has code

    # after know which name that without code, then looking for the code from Default Code by mapping the Name

任何人都可以帮助我。我非常感谢您的帮助。太感谢了。格布

【问题讨论】:

    标签: python arrays string multidimensional-array mapping


    【解决方案1】:

    如果代码为空,您可以进行字典查找。

    例如:

    DefaultName = ["AB", "BC", "CD"]
    DefaultCode = ["1D", "2D", "3D"]
    
    DefaultCode = dict(zip(DefaultName, DefaultCode)) # --> {'AB': '1D', 'BC': '2D', 'CD': '3D'}
    
    Name = ["AB", "BC", "CD"]
    Code = [" ","12", "13"]
    
    res = {n: c if c.strip() else DefaultCode.get(n, "N/A") for n, c in zip(Name, Code)}
    print(res)
    

    输出:

    {'AB': '1D', 'BC': '12', 'CD': '13'}
    

    【讨论】:

    • 非常感谢!您的输出是数组NameCode 的所有列表。但我的期望是,我只需要输出那个空的NameCode。那你能不能帮帮我。谢谢
    • 我只需要输出这个'AB': '1D'的空代码
    • 然后使用res = {n: DefaultCode.get(n, "N/A") for n, c in zip(Name, Code) if not c.strip()}
    • 对不起。我编辑我的问题。我喜欢这个Name = ["AB", "BC", "CD"] Code = [None ,"12", "13"] 的情况,但它不起作用:(请有任何建议
    • 使用if c is None
    【解决方案2】:

    上面的答案非常正确,但还有另一种更简单的方法。您可以将两个列表压缩成一个元组列表例如:

    Name = ["AB", "BC", "CD"]
    Code = ["11","12", "13"]
    
    NewList = zip(Name, Code)
    
    #iterate through list to demonstrate outputs
    for i in NewList:
       print(i)
    
    

    这段代码的输出是:

    ('AB', '11')
    ('BC', '12')
    ('CD', '13')
    

    列表中的每个元素都是一个元组。与列表的唯一区别是您无法更改其中的值,因此它们是不可变的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-23
      • 2016-02-01
      • 1970-01-01
      • 2014-09-27
      • 2021-11-15
      • 1970-01-01
      • 2018-06-28
      • 1970-01-01
      相关资源
      最近更新 更多