Python 字典到具有最小值的元组列表
好的,我正在尝试编写一个函数,它以一个字典作为参数,返回一个元组列表,第一个项作为键,第二个值作为最小值项。此外,如果字典的值为空,则元组在该位置应具有False。 它应该如何工作的示例:Python 字典到具有最小值的元组列表,python,list,dictionary,tuples,min,Python,List,Dictionary,Tuples,Min,好的,我正在尝试编写一个函数,它以一个字典作为参数,返回一个元组列表,第一个项作为键,第二个值作为最小值项。此外,如果字典的值为空,则元组在该位置应具有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]} >>&g
>>> 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()将字典转换为列表,但是如何将列表转换为字典和元组,或者最好的方法是什么-
我不知道怎么做,因为我得到了所有值的列表
这是因为在将值列表添加到valueslist
之前,您将其包含在另一个列表中。所以这是一个列表。这发生在美国-
temp=[value]
valueslist.append(temp)
通过list comphrension和dict.items()实现这一点的简单方法是-
解释-
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)]
因为您请求了for循环方法
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]}
def lowestPrice(storeDict):
valueslist =[] # init empty list
for k,v in storeDict.iteritems(): # iterate dict
if len(v) > 0: # if list has elements
valueslist.append((k,min(v))) # find min element and append
else:
valueslist.append((k,False)) # append with value = False
return valueslist
print lowestPrice(storeDict)
您还可以使用
(如果len(v)else False,则使用k,min(v)
。或者甚至(k,min(v或[False])
如果我想在单独的行中执行,然后在末尾返回,我该如何执行?在一行中理解所有内容对我来说有点困难。如果我想在单独的行中完成,然后在最后返回,我该怎么做?对我来说,用一行字来理解这一切有点难。所以如果我想让它看起来像这样:def lost_price(store_dict):newdict={}对于键,store_dict.items()中的值:If len(values)>0:(keys,min(values))else:(keys,False)返回如何返回它?比如,你能不能再添加一些变量和细节,这样就更容易理解了?好的,我当然会对这行的作用进行解释。@April我在答案中添加了解释,还添加了相同的列表理解的for-loop方法。如果v:
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]}
def lowestPrice(storeDict):
valueslist =[] # init empty list
for k,v in storeDict.iteritems(): # iterate dict
if len(v) > 0: # if list has elements
valueslist.append((k,min(v))) # find min element and append
else:
valueslist.append((k,False)) # append with value = False
return valueslist
print lowestPrice(storeDict)