2024-09-30 05:17:27 发布
网友
我需要编写一个程序,在列表中查找具有相同三个中间字符(每个单词有5个字符长)的单词,然后将它们写入如下文件:
wasdy casde tasdf gsadk csade hsadi
在相似的词之间我需要留下一个空行。我有点困了。 有办法吗?我使用python3.2。你知道吗
谢谢你的帮助。你知道吗
尝试:
from collections import defaultdict dict_of_words = defaultdict(list) for word in list_of_words: dict_of_words[word[1:-1]].append(word)
然后,要写入输出文件:
with open('outfile.txt', 'w') as f: for key in dict_of_words: f.write('\n'.join(dict_of_words[key]) f.write('\n' )
首先:尝试在单词列表中使用内置的sorted函数,对于关键字,您应该尝试使用slice(1, 4)。你知道吗
sorted
slice(1, 4)
例如:
some_list = ['wasdy', 'casde', 'tasdf', 'gsadk', 'other', 'csade', 'hsadi'] sorted(some_list, key = lambda x: sorted(x[1:4])) # outputs ['wasdy', 'casde', 'tasdf', 'gsadk', 'csade', 'hsadi', 'other']
编辑:我不清楚您是想要“顺序相同的三个中间字符”还是“顺序相同的三个中间字符”。如果是后者,那么你可以看sorted(some_list, key = lambda x: x[1:4])。你知道吗
sorted(some_list, key = lambda x: x[1:4])
我将使用^{}函数来实现这一点。假设wordlist是要分组的单词列表,这段代码就完成了。你知道吗
wordlist
import itertools for k, v in itertools.groupby(wordlist, lambda word: word[1:4]): # here, k is the key the words are grouped by, i.e. word[1:4] # and v is a list/iterable of the words in the group for word in v: print word print
itertools.groupby(wordlist, lambda word: word[1:4])基本上取所有单词,并按word[1:4]即中间的三个字符进行分组。以下是上述代码的输出和示例数据:
itertools.groupby(wordlist, lambda word: word[1:4])
word[1:4]
尝试:
然后,要写入输出文件:
首先:尝试在单词列表中使用内置的
sorted
函数,对于关键字,您应该尝试使用slice(1, 4)
。你知道吗例如:
编辑:我不清楚您是想要“顺序相同的三个中间字符”还是“顺序相同的三个中间字符”。如果是后者,那么你可以看
sorted(some_list, key = lambda x: x[1:4])
。你知道吗我将使用^{} 函数来实现这一点。假设
wordlist
是要分组的单词列表,这段代码就完成了。你知道吗itertools.groupby(wordlist, lambda word: word[1:4])
基本上取所有单词,并按word[1:4]
即中间的三个字符进行分组。以下是上述代码的输出和示例数据:相关问题 更多 >
编程相关推荐