我有一个元组列表,每个元组包含两个值。第一个值是一个字符串列表,第二个值是一个字符串:
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')]
内部理解 [word for word in words if len(word) == 6]
希望是清楚的——这会将列表过滤到长度为 6 的单词。外部元素只是将内部元素应用于每个元组的第一个元素并重建元组。
如果直接对值进行操作,当然不需要构造新的列表,正常迭代即可:
for (words, key) in list_of_tuples:
six_letter_words = [word for word in words if len(word) == 6]
....
我是一名优秀的程序员,十分优秀!