gpt4 book ai didi

python - 字典到具有最小值的元组列表

转载 作者:行者123 更新时间:2023-11-28 21:13:45 25 4
gpt4 key购买 nike

好的,所以我正在尝试编写一个函数,该函数将字典作为参数并返回一个元组列表,其中第一个项目作为键,第二个值作为最低值项目。此外,如果字典的值为空,则元组在该位置应为 False。它应该如何工作的示例:

>>> storeDict = {"socks" : [6.99, 4.50, 5.00, 4.99], "shoes" : [14.99,19.99], 
"napkin" : [],"shirt" : [8.99, 7.00, 6.50, 10.25, 8.99]}
>>> LowestPrice(storeDict)
[('shoes', 14.99), ('napkin', False), ('shirt', 6.5), ('socks', 4.5)]

所以我想做的是将字典变成一个列表,然后它们从那里获得最小值,但我不知道该怎么做,因为我得到了一个包含所有值的列表。我也不知道如何将其转换为元组。请帮我!!这是我的代码:

def LowestPrice(storeDict):
valueslist =[]
temp = []
for value in storeDict.values():
temp=[value]
valueslist.append(temp)

for x in valueslist:
if type(x) == list:
valueslist.append(min(x))
minimum = min(values list)

到目前为止,我知道我必须使用 .items() 将字典转换为列表,但是如何将此列表转换回字典和元组,或者最好的方法是什么做这个?

最佳答案

你说——

I don't know how to do this because I get a list of list for all the values

这是因为在将值列表添加到 valueslist 之前,您将值列表包含在另一个列表中。所以这是一个列表列表。这发生在 -

temp=[value]
valueslist.append(temp)

通过列表理解和 dict.items()` 可以做到这一点的一种简单方法是 -

def lowest_price(store_dict):
return [(k,min(v)) if len(v) > 0 else (k,False) for k,v in store_dict.items()]

解释-

  1. dict.items() 返回字典的键/值对作为元组列表(或在 Python 3.x 中作为 View ),因此我们首先在 for 循环中迭代它。

  2. min(v) 返回列表中的最小值,它是 Python 中的一个内置函数。

  3. 在列表理解中,我们循环遍历字典的项目,每次获取键/值,在每个循环中,我们检查值列表的长度是否大于 0,如果是我们正在取它的最小值,并且 (key, minimum of value) 被添加到列表中,否则我们将 (key , False) 添加到列表中。

上面的 for 循环方法是 -

def lowest_price(store_dict):
retlist = []
for k,v in store_dict.items():
if len(v) > 0:
retlist.append((k,min(v)))
else:
retlist.append((k,False))
return retlist

演示 -

>>> def lowest_price(store_dict):
... return [(k,min(v)) if len(v) > 0 else (k,False) for k,v in store_dict.items()]
...
>>> storeDict = {"socks" : [6.99, 4.50, 5.00, 4.99], "shoes" : [14.99,19.99],
... "napkin" : [],"shirt" : [8.99, 7.00, 6.50, 10.25, 8.99]}
>>>
>>> lowest_price(storeDict)
[('napkin', False), ('shirt', 6.5), ('shoes', 14.99), ('socks', 4.5)]

关于python - 字典到具有最小值的元组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32469947/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com