【问题标题】:Merging two lists with fields in python将两个列表与python中的字段合并
【发布时间】:2020-06-29 03:44:00
【问题描述】:

我正在尝试合并两个名称列表,以便将输出打印为“姓氏,名字”。我知道它应该如何在逻辑上工作,但在初始化方面需要帮助。

class Formatter:
    def __init__(self):
        self.firstNames = fn[]
        self.lastNames = ln[]

    def formatNames(self):
        nameList = self.__dict__.values()
        index = 0
        for item in nameList:
            print(self.LastName[index] + ", " + self.firstName[index])
            index += 1

fn = ["Mike", "Bob", "Billy"]
ln = ["Rose", "Smith", "Jones"]

Formatter()

【问题讨论】:

标签: python list merge initialization


【解决方案1】:

您可以在此处使用 zip 功能。

fn = ["Mike", "Bob", "Billy"]
ln = ["Rose", "Smith", "Jones"]

print(list(zip(fn, ln)))

输出将是。

[('Mike', 'Rose'), ('Bob', 'Smith'), ('Billy', 'Jones')]

【讨论】:

    【解决方案2】:

    我重构了您的代码并修复了您的初始化。这里有两种解决方案可供选择。

    class Formatter:
        def __init__(self, fn, ln):
            self.firstNames = fn
            self.lastNames = ln
    
        def formatNames(self):
            return list(zip(self.lastNames, self.firstNames))
    
    fn = ["Mike", "Bob", "Billy"]
    ln = ["Rose", "Smith", "Jones"]
    
    f = Formatter(fn, ln)
    formatted_names = f.formatNames()
    print(formatted_names)
    

    输出

    [('Rose', 'Mike'), ('Smith', 'Bob'), ('Jones', 'Billy')]
    

      class Formatter:
        def __init__(self, fn, ln):
            self.firstNames = fn
            self.lastNames = ln
    
        def formatNames(self):
            return [f"{l}, {f}" for l, f in zip(self.lastNames, self.firstNames)]
      
    fn = ["Mike", "Bob", "Billy"]
    ln = ["Rose", "Smith", "Jones"]
    
    f = Formatter(fn, ln)
    formatted_names = f.formatNames()
    print(formatted_names)
    

    输出

    ['Rose, Mike', 'Smith, Bob', 'Jones, Billy']
    

    【讨论】:

      猜你喜欢
      • 2013-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多