如何依次遍历dic中所有具有相同值的键

问题描述 投票:1回答:2

我正在处理一些文本文件,其中包含太多单词,我想获取所有带有length的单词。例如,首先,我想获取所有长度为2的单词,然后是3,然后是4,直到15字= this,langth = 4讨厌:4爱:4那:4中国:5太好了:5依此类推,直到15

我正在尝试使用下面的代码,但是我无法一次一遍地遍历所有键。通过这段代码,我只能得到长度为5的单词,但是我希望这个循环开始它从2到upt0 15,顺序为>

text = open(r"C:\Users\israr\Desktop\counter\Bigdata.txt") 

d = dict() 

 for line in text:  
    line = line.strip() 

    line = line.lower() 


    words = line.split(" ") 
    for word in words:
        if word not in d: 
            d[word] = len(word) 



def getKeysByValue(d, valueToFind):
    listOfKeys = list()
    listOfItems = d.items()
    for item  in listOfItems:
        if item[1] == valueToFind:
            listOfKeys.append(item[0])
    return  listOfKeys
listOfKeys = getKeysByValue(d, 5)

print("Keys with value equal to 5")
#Iterate over the list of keys
for key  in listOfKeys:
     print(key)

我正在处理一些文本文件,其中包含太多单词,我想获取所有带有length的单词。例如,首先,我想得到所有长度为2的单词,然后是3,然后是4,直到15 ... ... >>>> [[

您的代码的第一部分是正确的,字典
d
将为您提供具有各自长度的所有唯一单词。现在,您想要获得所有单词的长度,如下所示:
{'this':4, 'that':4, 'water':5, 'china':5, 'great':5.......till length 15}

要获得这种字典,您可以按以下值对字典进行排序。import operator sorted_d = sorted(d.items(), key=operator.itemgetter(1))

sorted_d将采用以下格式:

{'this':4, 'that':4, 'water':5, 'china':5, 'great':5,......., 'abcdefghijklmno':15,...}

我所做的是:
更改了字典的结构:在您的词典版本中,“单词”必须是键值等于其长度的键。像这样:{"hate": 4, "love": 4}新版本:{4: ["hate", "love"], 5:["great", "china"]}现在,键是整数,值是单词列表。例如,如果key为4,则该值将是文件中长度为4的所有单词的列表。

之后,代码将从文件读取的数据中填充字典。如果字典中没有该键,则会创建该键,否则将根据该键将单词添加到列表中。

    键被排序并打印其值。也就是说,该长度的所有单词都是按顺序打印的。
  1. 您忘记了关闭代码中的文件。在程序完成执行时释放程序正在使用的任何资源是一种很好的做法。 (以避免资源或内存泄漏以及其他此类错误)。在大多数情况下,只需关闭该资源即可完成此操作。例如,关闭文件会释放文件,因此它现在可以由其他程序使用。
  2. #2020年4月24日#03:11 AM(GMT +05)#塔哈·阿斯哈#打开文件以从中读取数据myFile = open(r“ books.txt”)#创建一个空字典,在其中存储字数统计#字典中数据的格式为:#{1:[来自长度为1的文件中的单词],2:[[来自长度为2的文件中的单词],.....依此类推}d = dict()#遍历文件的所有行对于myFile中的行:#从当前行获取单词单词= line.lower()。strip()。split(“”)#遍历当前行中的每个单词逐字逐句:#获取这个单词的长度长度= len(字)#词典中没有这个长度的单词#为此长度创建一个列表#length是键,值是具有此长度的单词列表如果长度不在d.keys()中:d [长度] = [字]#如果已经有这个长度的单词,则将当前单词追加到该列表中其他:d [length] .append(word)对于已排序的键(d.keys()):print(key,end =“:”)打印(d [key])myFile.close()
  3. Output of the Program
python-3.x dictionary bigdata
2个回答
0
投票

0
投票
更改了字典的结构:在您的词典版本中,“单词”必须是键值等于其长度的键。像这样:{"hate": 4, "love": 4}新版本:{4: ["hate", "love"], 5:["great", "china"]}现在,键是整数,值是单词列表。例如,如果key为4,则该值将是文件中长度为4的所有单词的列表。
© www.soinside.com 2019 - 2024. All rights reserved.