Python 如何在Dict{key:List}中找到最小值?

Python 如何在Dict{key:List}中找到最小值?,python,Python,我试图在字典中找到最低机票价格,如下所示: {datetime.date(2018, 12, 16): ['KL', 'AMS', '59.84'], datetime.date(2018, 12, 24): ['KL', 'AMS', '59.84'], datetime.date(2018, 12, 25): ['KL', 'AMS', '59.84'], datetime.date(2018, 12, 27): ['KL', 'AMS', '59.84'], datetim

我试图在字典中找到最低机票价格,如下所示:

{datetime.date(2018, 12, 16): ['KL', 'AMS', '59.84'],
  datetime.date(2018, 12, 24): ['KL', 'AMS', '59.84'],
  datetime.date(2018, 12, 25): ['KL', 'AMS', '59.84'],
  datetime.date(2018, 12, 27): ['KL', 'AMS', '59.84'],
  datetime.date(2018, 12, 18): ['KL', 'AMS', '59.84'],
  datetime.date(2018, 12, 19): ['KL', 'AMS', '59.84'],
  datetime.date(2018, 12, 20): ['KL', 'AMS', '59.84'],
  datetime.date(2018, 12, 23): ['KL', 'AMS', '59.84'],
  datetime.date(2018, 12, 17): ['AF', 'AMS', '70.24'],
  datetime.date(2018, 12, 21): ['SK', 'AMS', '97.93'],
  datetime.date(2018, 12, 26): ['SK', 'AMS', '97.93'],
  datetime.date(2018, 12, 28): ['SK', 'AMS', '97.93'],
  datetime.date(2019, 1, 2): ['SK', 'AMS', '97.93'],
  datetime.date(2019, 1, 3): ['SK', 'AMS', '97.93'],
  datetime.date(2018, 12, 29): ['AF', 'AMS', '111.64'],
  datetime.date(2018, 12, 31): ['EW', 'AMS', '127.51'],
  datetime.date(2019, 1, 1): ['EW', 'AMS', '127.51'],
  datetime.date(2018, 12, 30): ['EW', 'AMS', '147.51'],
  datetime.date(2018, 12, 22): ['KL', 'AMS', '148.84']}
第一个键是datetime,value=信息列表。我只是想简单地得到这个时间序列的最大和最小价格。我尝试了以下方法:

_tempPairAndPrices = {}
for item in permutations(destinations[1:],2):    
    #try:
    key_max = max(_fltDictTemp_CachedData[item].keys(),key=(lambda k: _fltDictTemp_CachedData[item][k]))
    key_min = min(_fltDictTemp_CachedData[item].keys(),key=(lambda k: _fltDictTemp_CachedData[item][k]))
    maxPx = _fltDictTemp_CachedData[item][key_max]
    minPx = _fltDictTemp_CachedData[item][key_min]

    _tempPairAndPrices[item] = {'maxPx':maxPx,'minPx':minPx}
我不认为它正确地访问了信息列表,因为它没有正确地分配最大值和最小值。。。(通常是我的最小值>>最大值)

谢谢

IIUC,与
键一起使用

[min(v.values(), key=lambda x: float(x[-1])) for k,v in d.items()]
输出

[['KL', 'AMS', '59.84']]

对于您编辑的数据,只需执行以下操作

min(d.values(), key=lambda x: float(x[-1]))
IIUC,与
键一起使用

[min(v.values(), key=lambda x: float(x[-1])) for k,v in d.items()]
输出

[['KL', 'AMS', '59.84']]

对于您编辑的数据,只需执行以下操作

min(d.values(), key=lambda x: float(x[-1]))

如果您只想获得最低机票价格,这是一种可能的解决方案:

prices = [float(i) for i in np.array(dict.values()[0].values())[:,-1]]
min_price = min(prices)
其中
dict
是您的字典。我在列表理解中使用
np.array()
的原因是为了使用索引
[:,-1]
,因为价格是列表的最后一个元素。但我看到有几种价格是相等的,而且是最低的。我不知道你打算怎么对付他们。当然,您可以将上述两行合并为一行,并写入:

min_price = min([float(i) for i in np.array(dict.values()[0].values())[:,-1]])

如果您只想获得最低机票价格,这是一种可能的解决方案:

prices = [float(i) for i in np.array(dict.values()[0].values())[:,-1]]
min_price = min(prices)
其中
dict
是您的字典。我在列表理解中使用
np.array()
的原因是为了使用索引
[:,-1]
,因为价格是列表的最后一个元素。但我看到有几种价格是相等的,而且是最低的。我不知道你打算怎么对付他们。当然,您可以将上述两行合并为一行,并写入:

min_price = min([float(i) for i in np.array(dict.values()[0].values())[:,-1]])

谢谢,看起来很接近,但我得到一个“列表”对象没有属性“值”error@keynesiancross
d
是你最常用的字典。Do
d.items()
应该给你一个元组作为
key
和另一个
dict
作为值。检查是否发生了这种情况:)啊,我实际上跳过了这一步,因为我在前面设置了d=originalDict[tupleKey]。我只剩下一个键(datetime)和输出list@keynesiancross所以它变得更简单,看起来很接近,但我得到的是一个“列表”对象没有属性“值”error@keynesiancross
d
是你最常用的字典。Do
d.items()
应该给你一个元组作为
key
和另一个
dict
作为值。检查是否发生了这种情况:)啊,我实际上跳过了这一步,因为我在前面设置了d=originalDict[tupleKey]。我只剩下一个键(datetime)和输出list@keynesiancross所以它得到了更简单的hanks,但我得到了一个“dict_values”对象,它不支持使用[0]的索引错误。我刚刚将您的第一个代码段复制为dict={…},它对我很有用。我使用了Python2.7.12,所以这可能是一个问题吗?谢谢,但是我得到了一个“dict_values”对象,它不支持在使用[0]时出现索引错误。我刚刚将您的第一个代码段复制为dict={…},它对我很有用。我使用了Python2.7.12,所以这可能是一个问题吗?