【问题标题】:Checking which key has the most letters in its dictionary in Python在 Python 中检查哪个键在其字典中的字母最多
【发布时间】:2021-09-18 21:51:04
【问题描述】:

我在 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'。

有没有一种有效的方法来做到这一点?谢谢。

【问题讨论】:

  • 您能否发布您的代码,以便我们更好地了解您的方法中的失败之处?
  • 可能尝试一种装饰-排序-不装饰的方法。

标签: python dictionary key


【解决方案1】:

您可以使用max的关键参数:

res = max(S, key=lambda x: (S[x] != 'omicron', len(S[x])))
print(res)

输出

(x6)

这将使值不同于'omicron' 的键具有比等于 (1 > 0) 的键更高的值。对于那些没有'omicron' 值的键,使用长度作为决胜局。

【讨论】:

    【解决方案2】:
    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-19
      • 1970-01-01
      • 1970-01-01
      • 2011-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多