简体   繁体   English

Python:遍历列表,将空白输出到第二个列表,然后按顺序调用

[英]Python: Iterate through list, output blank to second list to then call in order

Thanks for taking the time to help me out. 感谢您抽出宝贵时间帮助我。 Still a noob when it comes to Python but I'm slowly getting there. 谈到Python时仍然是一个菜鸟,但我慢慢地到了那里。

Backstory: Basically I'm transferring configuration from a PBX to a CSV file to then migrate to another system. 背景故事:基本上我将配置从PBX转移到CSV文件然后迁移到另一个系统。

Where I'm stuck: Currently I have a list of both extension numbers and then voice mail configuration. 我被困的地方:目前我有一个扩展号码列表,然后是语音邮件配置。 Not every phone has a voice mail email address so currently what I'm doing is comparing the data to see If the current extension has an email associated. 并非每部手机都有语音邮件电子邮件地址,因此目前我正在做的是比较数据以查看当前分机是否有关联的电子邮件。 Because of the way the data is exported, I'm storing everything to a list and It all needs to line up. 由于数据的导出方式,我将所有内容存储到列表中,所有这些都需要排队。

What I need it to do: I need the emails to output nicely to a list and have that line up with the extension list. 我需要它做什么:我需要将电子邮件很好地输出到列表中并使其与扩展列表对齐。 Eg: 例如:

list_extension_email = [' ', 'test@test', ' ', ' ', 'test2@test'] list_extension_email = ['','test @ test','','','test2 @ test']

list_extension_numbers = ['1000', '401', '402', '403', '404'] list_extension_numbers = ['1000','401','402','403','404']

Code: 码:

list_extension_voicemail = ['401, test@test', '404, test2@test']
list_extension_numbers = ['1000', '401', '402', '403', '404']
list_extension_email = []
line_variable = 0
blank_voicemails = 0

for extension in list_extension_numbers:
    extension_number = list_extension_numbers[line_variable]
    blank_line = " "
    for extension_voicemail in list_extension_voicemail:
      extension_and_voicemail = extension_voicemail.split(',')
      if extension_and_voicemail[0] in extension_number:
        while blank_voicemails != 0:
          list_extension_email.append(blank_line)
          blank_voicemails-=1
        list_extension_email.append(extension_and_voicemail[1])
        blank_voicemails = 0
      else:
        blank_voicemails+=1


extension_email = list_extension_email[line_variable]

Sorry if this is very vague and non descriptive, I'm open to hearing any solutions. 对不起,如果这是非常模糊和非描述性的,我愿意听取任何解决方案。 Once again, thanks all 再一次,谢谢大家

I think this does what you want: 我认为这样做你想要的:

list_extension_voicemail = ['401, test@test', '404, test2@test']
list_extension_numbers = ['1000', '401', '402', '403', '404']

# Make list of empty emails
list_extension_email = [''] * len(list_extension_numbers)
# Make a dict that gives you the list index for each number
number_idx = {number: idx for idx, number in enumerate(list_extension_numbers)}
for number_email in list_extension_voicemail:
    # Split by comma
    number, email = number_email.split(',')
    # Remove extra spaces
    number = number.strip()
    email = email.strip()
    # Set email in list if number exists
    if number in number_idx:
        list_extension_email[number_idx[number]] = email

# Print result
print('list_extension_email =', list_extension_email)
print('list_extension_numbers =', list_extension_numbers)

Output: 输出:

list_extension_email = ['', 'test@test', '', '', 'test2@test']
list_extension_numbers = ['1000', '401', '402', '403', '404']

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM