Python:如何找出两个字符串列表之间的差异?

2024-09-29 23:33:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我用的是python3。我有两个字符串列表,我正在寻找两者之间的不匹配。我的代码适用于较小的列表,但不适用于较大的列表。在

非工作列表的输入格式如下:

mmec11.mmegifffa.mme.epc.mnc980.mcc310.3gppnetwork.org
mmec13.mmegifffa.mme.epc.mnc980.mcc310.3gppnetwork.org
mmec12.mmegifffa.mme.epc.mnc980.mcc310.3gppnetwork.org
mmec14.mmegifffa.mme.epc.mnc980.mcc310.3gppnetwork.org

我比较上述格式的两个数据列表的功能是:

^{pr2}$

问题是它不起作用。我得到了两个列表合并成一个长列表的输出文件。当我做一个测试就是每次比赛都说“嗨”,什么都没发生。有人知道我哪里出错了吗。我在一家电信公司工作,我们试图通过大量的数据库转储来找到失踪的女士

我在想也许我的输入函数坏了?其功能是:

for line in input:
        field = line.split()
        tempMME = field[0]
        result.append(tempMME)

我对这些东西不是很有经验,我想知道线.分割()函数因MME名称中的句点而出现故障?在

谢谢你的帮助!在


Tags: 函数字符串org功能field列表格式line
3条回答

我测试了你的compare函数,假设mmeList1和mmeList2中的数据是正确的,它运行得很好。在

例如,我使用以下数据对compare函数进行了测试。在

列表1:

mmec11.mmegifffa.mme.epc.mnc980.mcc310.3gppnetwork.org
mmec13.mmegifffa.mme.epc.mnc980.mcc310.3gppnetwork.org
mmec12.mmegifffa.mme.epc.mnc980.mcc310.3gppnetwork.org
mmec14.mmegifffa.mme.epc.mnc980.mcc310.3gppnetwork.org

列表2:

^{pr2}$

包含的结果:

mmec14.mmegifffa.mme.epc.mnc980.mcc310.3gppnetwork.org

我怀疑问题是mmeList1和mmeList2并不包含您认为它们包含的内容。不幸的是,如果不了解mmeList1和mmeList2是如何填充的,我们无法为您提供更多帮助。在

如果你想看到两者的区别,(即结果应该包含mmec14和mmec15),那么你需要使用的是集合。在

例如:

mmeSet1 = set(mmecList1)
mmeSet2 = set(mmecList2)

print mmeSet1.symmetric_difference(mmeSet2)

将导致:

['mmec14.mmegifffa.mme.epc.mnc980.mcc310.3gppnetwork.org', 'mmec15.mmegifffa.mme.epc.mnc980.mcc310.3gppnetwork.org']

首先,在列表中使用set()是减少迭代。试试这个

result = []
a=list(set(mmeList1))
b=list(set(mmeList2))
for x in a:
    if x not in b:
        result.append(x)
return result

如果您不需要保留排序,那么下面的结果将导致所有存在于list2中而不是list1中的mme。在

result = list(set(mmeList2) - set(mmeList1))

相关问题 更多 >

    热门问题