python – 删除元组中列表列表中的项目

我有一个元组列表,每个元组包含两个值.第一个值是字符串列表,第二个值是字符串:

list_of_tuples = [(['this', 'askjsdaddsa', 'match1'], 'done'), (['sajs', 'skasassas', 'asdasdasdasd', 'qwerty'], 'doneagain')]

如何将元组中的第一个值减少到只包含六个字母的字符串?理想情况下我会

final_list_of_tuples = [('match1' , 'done'), ('qwerty', 'doneagain')]

到目前为止,我有以下内容:

for a, b in dict_refine:
    a.remove(i for i in a if len(i) != 6)

我觉得好像有一些非常基本的东西,我正在吹过去.有没有办法在一行中做到这一点?输出到字典会更容易吗?

最佳答案 与涉及在Python中更改列表的大多数任务一样,此处作业的工具可能是
list comprehension,在本例中,其中两个:

>>> [([word for word in words if len(word) == 6], key) for (words, key) in list_of_tuples]
[(['match1'], 'done'), (['qwerty'], 'doneagain')]

内心理解[单词中的单词如果len(单词)== 6]希望清楚 – 这会将列表过滤为长度为6的单词.外部只将内部一个应用于每个元组的第一个元素并重建元组.

当然,如果您直接使用这些值,则无需构建新列表,您可以正常迭代:

for (words, key) in list_of_tuples:
    six_letter_words = [word for word in words if len(word) == 6]
    ....
点赞