【问题标题】:how can i find the next min number in dictionary list [duplicate]我如何在字典列表中找到下一个最小数字[重复]
【发布时间】:2020-04-03 21:24:45
【问题描述】:

我想找到我编写此代码的字典的下一个最小值,但 for 循环似乎有错误 有什么帮助吗??

nodesdistfromsmartmeter = {'nodeA': 100, 'nodeB': 250, 'nodec': 300, 'nodeD': 50}

min_dist=min(nodesdistfromsmartmeter,key=nodesdistfromsmartmeter.get)
print("smalistdist",min_dist)
seondmin=0
for v in nodesdistfromsmartmeter():
 if(v>seondmin and v>min_dist):
    seondmin=v
    print(seondmin)

【问题讨论】:

  • 在您的示例中为 100 的下一分钟?
  • 是的,应该是 100

标签: python


【解决方案1】:

希望这会有所帮助:

from heapq import nsmallest

my_dict = {'nodeA': 100, 'nodeB': 250, 'nodec': 300, 'nodeD': 50}

print(nsmallest(2, my_dict.values())[-1])

【讨论】:

    【解决方案2】:

    试试这个,它修复了一些错误。

    nodesdistfromsmartmeter = {'nodeA': 100, 'nodeB': 250, 'nodec': 300, 'nodeD': 50}
    
    min_dist=min(nodesdistfromsmartmeter,key=nodesdistfromsmartmeter.get)
    print("smalistdist",min_dist)
    secondmin=0
    for v in nodesdistfromsmartmeter.keys():
     if(nodesdistfromsmartmeter[v]>secondmin and nodesdistfromsmartmeter[v]>nodesdistfromsmartmeter[min_dist]):
        secondmin=nodesdistfromsmartmeter[v]
        print(seondmin)
    

    输出:

    smalistdist nodeD
    100
    250
    300
    

    【讨论】:

      【解决方案3】:

      你只需要改变这个:

      for v in nodesdistfromsmartmeter():
      

      为此:

      for v in nodesdistfromsmartmeter.values():
      

      【讨论】:

      • 仍然给我一个错误
      • if(v>seondmin and v>min_dist): TypeError: '>' not supported between 'str' and 'int'
      • 我更新了答案
      猜你喜欢
      • 2018-10-15
      • 2023-04-08
      • 2019-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-31
      • 2021-07-16
      • 2011-07-16
      相关资源
      最近更新 更多