【问题标题】:python: compare part of a string from a list of strings to items in another list and generate a third listpython:将字符串列表中的部分字符串与另一个列表中的项目进行比较并生成第三个列表
【发布时间】:2021-10-07 12:21:38
【问题描述】:

给定一个名称列表(列表 A)和相应的标题, 我正在遍历它以确定每个条目的标题(先生,夫人,博士等......) 通过将其与包含这些标题的另一个列表(列表 B)进行比较 并仅使用其标题创建另一个列表(列表 C)。 如果列表 A 中的名称未在列表 B 中列出, 那么列表 C 应填写完整的列表 A 中的名称。

以下代码:

A = [
    'Anna, Mrs. James (Nadia Elf)',
    'Martin, Mr. Michael',
    'Barese, Mr. Alfred',
    'Amalfi, Mrs. Abby (J E V)',
    'Manuel, Dr. Louis'
]
C=[]
B=['Mrs.','Mr.','Dr.']
for i in A:
    for j in B:
        if j in i:
            C.append(j)
      
print(C) # prints ['Mrs.', 'Mr.', 'Mr.', 'Mrs.', 'Dr.']

打印正确的输出,这是因为 A 中包含的所有标题都显示在 B 中, 但 如果我通过将列表 A 中的最后一项编辑为“卡片”来稍微更改上面的代码。而不是“博士”

A = [
    'Anna, Mrs. James (Nadia Elf)',
    'Martin, Mr. Michael',
    'Barese, Mr. Alfred',
    'Amalfi, Mrs. Abby (J E V)',
    'Manuel, card. Louis'
]
C=[]
B=['Mrs.','Mr.','Dr.']
for i in A:
    for j in B:
        if j in i:
            C.append(j)
        else:
            C.append(i)
print(C)

我想看看这个输出['Mrs.', 'Mr.', 'Mr.', 'Mrs.', 'Manuel, card. Louis']

而是打印出来

['Mrs.', 'Anna, Mrs. James (Nadia Elf)', 'Anna, Mrs. James (Nadia Elf)', 'Martin, Mr. Michael', 'Mr.', 'Martin, Mr. Michael', 'Barese, Mr. Alfred', 'Mr.', 'Barese, Mr. Alfred', 'Mrs.', 'Amalfi, Mrs. Abby (J E V)', 'Amalfi, Mrs. Abby (J E V)', 'Manuel, card. Louis', 'Manuel, card. Louis', 'Manuel, card. Louis']

如何解决?

【问题讨论】:

    标签: python list string-comparison


    【解决方案1】:

    这应该可行。在您的代码中,对于B 中的每个元素,它会尝试在A 中找到它 - 如果不匹配,仍将i 附加到c

    A = [
        'Anna, Mrs. James (Nadia Elf)',
        'Martin, Mr. Michael',
        'Barese, Mr. Alfred',
        'Amalfi, Mrs. Abby (J E V)',
        'Manuel, card. Louis'
    ]
    C=[]
    B=['Mrs.','Mr.','Dr.']
    for i in A:
        contains = False
        for j in B:
            if j in i:
                contains = True
                break
                
        if contains:
            C.append(j)
        else:
            C.append(i)
    print(C)
    

    输出: ['Mrs.', 'Mr.', 'Mr.', 'Mrs.', 'Manuel, card. Louis']

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-19
      • 2020-01-08
      • 2011-10-05
      • 1970-01-01
      • 2020-12-18
      相关资源
      最近更新 更多