删除多个嵌套列表中的重复列表项

2024-04-29 12:40:09 发布

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

我有以下清单:

values = [
    ['registrationController', 'regBean', 'firstName'],
    ['registrationController', 'regBean', 'surname'],
    ['registrationController', 'regBean', 'userName'],
    ['registrationController', 'regBean', 'password'],
    ['registrationController', 'regBean', 'confirmPassword'],
    ['registrationController', 'regBean', 'emailAddress'],
    ['registrationController', 'regBean', 'confirmEmail'],
    ['registrationController', 'regBean', 'securityQuestionAndAnswerOne', 'question'],
    ['registrationController', 'regBean', 'securityQuestionAndAnswerOne', 'answer'],
    ['registrationController', 'regBean', 'securityQuestionAndAnswerTwo', 'question'],
    ['registrationController', 'regBean', 'securityQuestionAndAnswerTwo', 'answer'],
    ['registrationController', 'regBean', 'securityQuestionAndAnswerThree', 'question'],
    ['registrationController', 'regBean', 'securityQuestionAndAnswerThree', 'answer'],
    ['registrationController', 'regBean', 'tAndCAccepted']
]

我试图找出如何删除所有列表中预设的值,并将这些值保留在 在某个时刻,当他们变得像这样的时候:

unique_values = [
    ['firstName'],
    ['surname'],
    ['userName'],
    ['password'],
    ['confirmPassword'],
    ['emailAddress'],
    ['confirmEmail'],
    ['securityQuestionAndAnswerOne', 'question'],
    ['securityQuestionAndAnswerOne', 'answer'],
    ['securityQuestionAndAnswerTwo', 'question'],
    ['securityQuestionAndAnswerTwo', 'answer'],
    ['securityQuestionAndAnswerThree', 'question'],
    ['securityQuestionAndAnswerThree', 'answer'],
    ['tAndCAccepted']
]

你知道我怎么能做到吗?我试过各种方法,但都无法找到一个有效的解决方案。你知道吗


Tags: answerusernamepasswordsurnamefirstnamevaluesquestionemailaddress
3条回答

这是一个容易理解和可读的版本。它也能维持秩序。你知道吗

common = set.intersection(*values)
reduced_values = [[value for value in l if value not in common] for l in values]

通过列表理解:

>>> [
    [elt for elt in line if not all(elt in subline for subline in values)]
    for line in values
]

[['firstName'], ['surname'], ['userName'], ['password'], ['confirmPassword'], ['emailAddress'], ['confirmEmail'], ['securityQuestionAndAnswerOne', 'question'], ['securityQuestionAndAnswerOne', 'answer'], ['securityQuestionAndAnswerTwo', 'question'], ['securityQuestionAndAnswerTwo', 'answer'], ['securityQuestionAndAnswerThree', 'question'], ['securityQuestionAndAnswerThree', 'answer'], ['tAndCAccepted']]

使用“设置交集”获取所有公共元素,并使用嵌套列表来构建已清理的列表:

common = set(values[0])
for lst in values[1:]:
    common = common.intersection(lst)

unique_values = [[v for v in lst if v not in common] for lst in values]

相关问题 更多 >