搜索与写作

2024-09-30 05:17:27 发布

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

我需要编写一个程序,在列表中查找具有相同三个中间字符(每个单词有5个字符长)的单词,然后将它们写入如下文件:

wasdy
casde
tasdf

gsadk
csade
hsadi

在相似的词之间我需要留下一个空行。我有点困了。 有办法吗?我使用python3.2。你知道吗

谢谢你的帮助。你知道吗


Tags: 文件程序列表字符单词办法个字符空行
3条回答

尝试:

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)。你知道吗

例如:

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])。你知道吗

我将使用^{}函数来实现这一点。假设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]即中间的三个字符进行分组。以下是上述代码的输出和示例数据:

wasdy
casde
tasdf

gsadk
csade
hsadi
 

相关问题 更多 >

    热门问题