具有相同键的集合的Python字典

2024-10-01 07:36:32 发布

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

我试图创建一个函数来读取每行有一个单词的文本文件,比如

afd
asmv
adsasd

它将使用用户给定长度的单词,并构建一个python字典,其中的键是单词的字符串,字母在其中进行排序。值将是具有相同键的所有单词的集合。到目前为止,我已经:

def setdict():
wordfile = argv[1]
open(wordfile, "r")
setdict = {}
for line in wordfile:
    words = line.split()
    for word in words:
        word = word.rstrip("\n")
        if word == wordlength:
            key = str(sorted(word))

我对如何创建具有相同关键字的单词集并将它们放入词典有点迷茫。任何帮助都将不胜感激。在


Tags: 函数用户infor字典line单词word
3条回答

这里的关键是使用for循环访问字典,该循环使值集可用于操作。可以通过逐行读取文件(readline)并检查以下内容来解决问题:

for key, value in my_dict:
    if sorted(word) == key:
        value.append(word)
    else:
        my_dict[sorted(word)] = value

collections.defaultdict在这里很有用:

from collections import defaultdict
from pprint import pprint


words = defaultdict(set)

with open('input.txt') as input_file:
    for line in input_file:
        for word in line.split():
            sorted_list = sorted(word)
            sorted_str = ''.join(sorted_list)
            words[sorted_str].add(word)

pprint(words)

当然,您可以使用defaultdict执行任何操作,也可以使用dict.setdefault()进行操作:

^{pr2}$

从简单的事情开始

words = ["hello","python","world"]
my_dict = {}
for word in words:
    try:
       my_dict[sorted(word)].append(word)
    except KeyError:
       my_dict[sorted(word)] = [word]

现在不再使用预定义的单词,而是从文件中读取它们

^{pr2}$

相关问题 更多 >