[英]Python - Dictionary of sets with the same key
我正在尝试创建一个函数来读取文本文件,该文本文件的每一行都包含一个单词,例如
后
影视
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))
我对如何使用具有相同关键字的单词创建集合并将它们放入字典中有些迷惑。 任何帮助,将不胜感激。
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()
:
words = dict()
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.setdefault(sorted_str, set()).add(word)
从简单的事情开始
words = ["hello","python","world"]
my_dict = {}
for word in words:
try:
my_dict[sorted(word)].append(word)
except KeyError:
my_dict[sorted(word)] = [word]
现在不再使用预定义的单词,而是从文件中读取它们
words = map(str.split,open("some_word_file.txt"))
此处的关键是使用for循环访问字典,该循环使值集可用于操作。 您可以通过逐行读取文件(readline)并检查以下内容来解决问题:
for key, value in my_dict:
if sorted(word) == key:
value.append(word)
else:
my_dict[sorted(word)] = value
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.