我有一个元组列表,每个元组包含两个值.第一个值是字符串列表,第二个值是字符串:
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]
....