a = ['also', 'akin', 'akee','ague', 'aero', 'anes','here','beer','bute', 'byre', 'came', 'case', 'doze', 'down', 'drek', 'drew', 'dyes', 'fret', 'freo']
i = 'e'#i is user guess input
dic = {}
for item in a:
key = ''
for chr in item:
if chr == i:
key += i
else:
key += '-'
if key not in dic:
dic[key] = []
dic[key].append(item)
print(dic)
c = max(k for k, v in dic.items())
d = max(v for k, v in dic.items())
print('\nmax key:',c)
print('\nmax value:',d)
输出:
{'---e': ['ague', 'bute', 'byre', 'came', 'case', 'doze'], '--ee': ['akee'], '----': ['also', 'akin', 'down'], '-e-e': ['here'], '-ee-': ['beer'], '--e-': ['anes', 'drek', 'drew', 'dyes', 'fret', 'freo'], '-e--': ['aero']}
max key: -ee-
max value: ['here']
在上面的例子中,a是一个单词列表。当用户猜出一个字母,例如'e'时,程序会遍历列表中的每个单词。将任何不是'e'的字母替换为短划线' - '。
我尝试将该结果映射到字典中,以跟踪字母“e”出现在同一位置的每组单词。
现在,我想检索具有最多字数的单词组(或键)。从输出来看,我不是这样做的,因为key'-e--'的单词数量最多。
我也试过
max(dic.keys())
max(dic)
dic.get(max(dic.keys()))
我不完全理解字典的最大键和值的概念吗?
请建议我如何解决这个问题。
由于
答案 0 :(得分:1)
在您的问题中,max
的概念意味着being associated with the largest list.
或being the largest list
max(dic.keys(), key=lambda x: len(dic[x]))
会给你最大的双键
此外,
sorted(dic.items(), key=lambda x:len(x[1]), reverse=True)
(在这个例子中,lambda (x, y): len(y)
在python 2中工作,不确定python 3)
将输出按匹配数排序的键,值元组列表:
[('---e', ['ague', 'bute', 'byre', 'came', 'case', 'doze']), ('--e-', ['anes', 'drek', 'drew', 'dyes', 'fret', 'freo']), ('----', ['also', 'akin', 'down']), ('-e-e', ['here']), ('--ee', ['akee']), ('-e--', ['aero']), ('-ee-', ['beer'])]
如果不使用lambda,您将使用常规函数:
def myMax(value_tuple):
key, value = value_tuple
return len(value)
并像这样使用它:
max(dic.items(), key=myMax)
答案 1 :(得分:0)
检索最大密钥:
max(MyDictionary.keys(),key = type)。
检索最大值:
max(MyDictionary.values(),key = type)
在两种情况下都用键类型替换类型。即int
希望它有所帮助。