在 Python 中检查哪个键在其字典中的字母最多
Checking which key has the most letters in its dictionary in Python
我在 Python 代码中有一个字典,如下所示:
S = {(x0): 'omicron', (x1): 'a', (x2): 'ab', (x3): 'abbr', (x4): 'abr', (x5): 'abrf', (x6): 'abrfa', (x7): 'af', '(x8)': 'afc'}
我想检查哪个键的对应字典中字母数最多,但 'omicron' 除外。这个例子中的答案应该是:(x6),因为它有一个包含 5 个字母的字典,比任何其他键都多,而且还不算 (x0):'omicron'.
有没有有效的方法来做到这一点?谢谢。
您可以使用 max 的关键参数:
res = max(S, key=lambda x: (S[x] != 'omicron', len(S[x])))
print(res)
输出
(x6)
这将使值不同于 'omicron'
的键的值高于等于 (1 > 0) 的键。对于那些没有 'omicron'
值的键,使用长度作为决胜局。
S = {('x0'): 'omicron', ('x1'): 'a', ('x2'): 'ab', ('x3'): 'abbr', ('x4'): 'abr', ('x5'): 'abrf', ('x6'): 'abrfa', ('x7'): 'af', ('x8'): 'afc'}
keys = list(S.keys())
longest = 0
word = ''
for i in range(len(keys)):
if len(S[f'{keys[i]}']) > longest and S[f'{keys[i]}'] != 'omicron':
longest = len(S[f'{keys[i]}'])
word = keys[i]
print(longest, word)
输出:
5 x6
我在 Python 代码中有一个字典,如下所示:
S = {(x0): 'omicron', (x1): 'a', (x2): 'ab', (x3): 'abbr', (x4): 'abr', (x5): 'abrf', (x6): 'abrfa', (x7): 'af', '(x8)': 'afc'}
我想检查哪个键的对应字典中字母数最多,但 'omicron' 除外。这个例子中的答案应该是:(x6),因为它有一个包含 5 个字母的字典,比任何其他键都多,而且还不算 (x0):'omicron'.
有没有有效的方法来做到这一点?谢谢。
您可以使用 max 的关键参数:
res = max(S, key=lambda x: (S[x] != 'omicron', len(S[x])))
print(res)
输出
(x6)
这将使值不同于 'omicron'
的键的值高于等于 (1 > 0) 的键。对于那些没有 'omicron'
值的键,使用长度作为决胜局。
S = {('x0'): 'omicron', ('x1'): 'a', ('x2'): 'ab', ('x3'): 'abbr', ('x4'): 'abr', ('x5'): 'abrf', ('x6'): 'abrfa', ('x7'): 'af', ('x8'): 'afc'}
keys = list(S.keys())
longest = 0
word = ''
for i in range(len(keys)):
if len(S[f'{keys[i]}']) > longest and S[f'{keys[i]}'] != 'omicron':
longest = len(S[f'{keys[i]}'])
word = keys[i]
print(longest, word)
输出:
5 x6