第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

如何根據(jù)字典列表中另一個(gè)鍵的值獲取一個(gè)鍵的最小值?

如何根據(jù)字典列表中另一個(gè)鍵的值獲取一個(gè)鍵的最小值?

藍(lán)山帝景 2023-09-26 16:42:55
我有一個(gè)字典列表,看起來像 -"produce": [    {        "name": "carrot",        "type": "vegetable",        "price": 10.0,        "units": "KG"    },    {        "name": "potato",        "type": "stem tuber",        "price": 2.0,        "units": "KG"    },    {        "type": "fruit",        "price": 5.0,        "units": "KG"    }]如果類型是水果或塊莖,我需要獲得最低的價(jià)格。我收到類型錯(cuò)誤 -TypeError: 'float' object is not iterable我有以下代碼 -for m in produce:    if ((m.get('type') == 'stem tuber') or         (m.get('type') == 'fruit')       ):       fPrice = min(m['price'])我收到錯(cuò)誤fPrice = min(m['price'])。我不知道如何解決這個(gè)問題。有人可以幫忙嗎?我需要獲得5.0和之間的最低價(jià)格2.0,所以答案應(yīng)該是2.0。
查看完整描述

2 回答

?
臨摹微笑

TA貢獻(xiàn)1982條經(jīng)驗(yàn) 獲得超2個(gè)贊

您收到錯(cuò)誤是因?yàn)槟?提供了單獨(dú)的數(shù)字min(),并且min想要一個(gè)iterable諸如 a 的數(shù)字list。我們該如何解決這個(gè)問題?假設(shè)你有一本像這樣的字典:


mydict = {"produce": [

? ? {

? ? ? ? "name": "carrot",

? ? ? ? "type": "vegetable",

? ? ? ? "price": 10.0,

? ? ? ? "units": "KG"

? ? },

? ? {

? ? ? ? "name": "potato",

? ? ? ? "type": "stem tuber",

? ? ? ? "price": 2.0,

? ? ? ? "units": "KG"

? ? },

? ? {

? ? ? ? "type": "fruit",

? ? ? ? "price": 5.0,

? ? ? ? "units": "KG"

? ? }

]}

produce?=?mydict['produce']

是時(shí)候構(gòu)建列表理解了!

您想要迭代列表中的項(xiàng)目produce。

[for?m?in?produce]

然后,您想要檢查該類型是否在某些字符串集中。

[for?m?in?produce?if?m.get('type')?in?{'stem?tuber',?'fruit'}]

然后,您想要提取其價(jià)格。如果不存在價(jià)格,則 0 似乎是合理的默認(rèn)值!

[m.get('price',?0)?for?m?in?produce?if?m.get('type')?in?{'stem?tuber',?'fruit'}]

然后你想找到最小值

min([m.get('price',?0)?for?m?in?produce?if?m.get('type')?in?{'stem?tuber',?'fruit'}])

您還可以去掉周圍的方括號m.get(...),它就成為一個(gè)生成器表達(dá)式

關(guān)于。?“如何處理列表理解中沒有莖塊莖或水果類型記錄的情況”

您可以將另一個(gè)項(xiàng)目添加到列表中,如下所示:

min([m.get('price',?0)?for?m?in?produce?if?m.get('type')?in?{'stem?tuber',?'fruit'}]?+?[-1])

據(jù)推測,沒有任何成本為 -1(0 是最小值)。那么如果你得到-1,你就知道沒有匹配的東西。


查看完整回答
反對 回復(fù) 2023-09-26
?
明月笑刀無情

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超4個(gè)贊

您將單獨(dú)的價(jià)格提供給min,這是行不通的。相反,提供可迭代的價(jià)格。您可以使用生成器表達(dá)式:

low = min(

? ? m['price']

? ? for m in produce

? ? if m.get('type') in {'stem tuber', 'fruit'}

? ? )

print(low)? # -> 2.0

如果它可以幫助您更好地理解,這就像使用列表理解然后將列表輸入到min,但更直接。


prices = [

? ? m['price']

? ? for m in produce

? ? if m.get('type') in {'stem tuber', 'fruit'}

? ? ]

low = min(prices)

print(low)? # -> 2.0

要處理沒有匹配價(jià)格的情況,請將min部分包裝在try塊中并使用except ValueError。舉例來說,讓我們使用現(xiàn)有數(shù)據(jù),但假設(shè)您正在尋找葫蘆的最低價(jià)格:


try:

? ? low = min(

? ? ? ? m['price']

? ? ? ? for m in produce

? ? ? ? if m.get('type') in {'gourd'}

? ? ? ? )

except ValueError:

? ? print('No matching prices')

? ? import sys

? ? sys.exit(1)


查看完整回答
反對 回復(fù) 2023-09-26
  • 2 回答
  • 0 關(guān)注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號