在字典中查找具有最大长度的所有值

2024-09-28 17:00:48 发布

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

我正在写一个字谜程序。用户输入他们想要的单词的长度,例如11,然后我的程序将排序后的单词存储在dict键中,而值则是存储在like中的anagram在我的示例输出中。我只打印带有最大集合的值和最多的单词,例如在示例输出中它的3个单词。但如果有另一个值,有3个字,我希望它也打印出来。在

示例输出:仅打印:

['activations', 'cavitations', 'vacationist']

但我也想:

^{pr2}$

代码

def main():
    wordList = readMatrix()
    sortDict = (lengthWord(wordList))
    maxSet = max(sortDict.values(), key = len)
    print(sorted(maxSet))
    for wor in sortDict.values():
        if len(maxSet) == len(sortDict.values()):
            print(sortDict.values())

def readMatrix():
    wordList = []
    strFile = open("wordsEn.txt", "r")
    lines = strFile.readlines()
    for line in lines:
        word = line.rstrip().lower()
        wordList.append(word)
    return tuple(wordList)

def lengthWord(wordList):
    lenWord = 11
    sortDict = {}
    wordList = readMatrix()
    for word in wordList:
        if len(word) == lenWord:
            sortWord = ''.join(sorted(word))
            if sortWord not in sortDict:
                sortDict[sortWord] = set()
            sortDict[sortWord].add(word)
    return sortDict



main()

Tags: in程序示例forlenifdef单词
3条回答

如果我对你的理解是对的,我会做一些类似的事情:

m = max(sortDict.values())
print [v for v in sortDict.values() if len(v) == m]

或者更明确的方式

^{pr2}$

这个怎么样?在

d1 = dict()
d1[0] = 5
d1[1] = 9
d1[2] = 9
d1[3] = 4

maxValue = max(d1.values()) # figure out the max value
print( [key for key in d1 if d1[key]==maxValue] ) # for keys
print( [d1[key] for key in d1 if d1[key]==maxValue] ) # for values

使用Python 3.4.2 (v3.4.2:ab2c023a9432, Oct 6 2014, 22:16:31) [MSC v.1600 64 bit (AMD64)] on win32输出:

^{pr2}$

max返回最大值,而不是项。您可以通过max(d.values())计算出最大值,然后对每个键进行线性搜索,看看它是否等于最大值。在

相关问题 更多 >