4 回答

TA貢獻(xiàn)1858條經(jīng)驗(yàn) 獲得超8個(gè)贊
在這里,我將您的字典列表聲明為變量list_of_objs。由于該num_likes值string-type用于int(obj['num_likes'])轉(zhuǎn)換string-to-int- 將其傳遞給max方法將返回 th max_likes。
list_of_objs = [{..}, {..}, {..}]
max_likes = max([int(obj['num_likes']) for obj in list_of_objs if 'num_likes' in obj.keys()])
print(max_likes)
max_likes_objs =[obj for obj in list_of_objs if int(obj['num_likes'])==max_likes]
print(max_likes_objs)
我打印的最后一行是list of all the dictionaries that have the max-value of num-likes

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超21個(gè)贊
你可以試試這個(gè):
k=max([i['num_likes'] for i in d]) [i['status_id'] for i in d if i['num_likes']==k][0]

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超13個(gè)贊
聲明list_of_status_ids = [{}, {} ...]
迭代 list_of_status_ids 并添加一個(gè)字典,其中鍵為num_likes ,值作為status_id列表。
然后獲取最大num_likes并獲取與該最大 num_likes 對(duì)應(yīng)的所有status_id 。
from collections import defaultdict
status_id_map = defaultdict(list)
[status_id_map[obj['num_likes']].append(obj['status_id']) for obj in list_of_status_ids]
print status_id_map.get(max(status_id_map.keys()))

TA貢獻(xiàn)1868條經(jīng)驗(yàn) 獲得超4個(gè)贊
使用更簡(jiǎn)單的列表作為示例:
l = [
{'likes': 5, 'id': 1},
{'likes': 2, 'id': 2},
{'likes': 7, 'id': 3},
{'likes': 1, 'id': 4},
]
result = list(filter(lambda item: item['likes'] == max([item['likes'] for item in l]), l))
print(result)
這將打印[{'likes': 7, 'id': 3}]. 這里的問(wèn)題是,如果你可以有多個(gè)“最大相似項(xiàng)”。這就是該函數(shù)返回一個(gè)列表的原因。要打印所有 ID,您可以:
print([item['id'] for item in result])
如果您確定不超過(guò)一個(gè)項(xiàng)目,或者您恰好需要一個(gè)(可能是第一個(gè)),您可以執(zhí)行以下操作:
result = list(filter(lambda item: item['likes'] == max([item['likes'] for item in l]), l))
result = result[0]['id']
print(result)
3這將在示例中打印。
現(xiàn)在如何解決這個(gè)問(wèn)題:首先你需要最大的喜歡數(shù):
max([item['likes'] for item in l])
稱之為 maxLikes。然后您需要獲取具有此點(diǎn)贊值的所有項(xiàng)目:
filter(lambda item: item['likes'] == maxLikes, l)
這是一個(gè)應(yīng)用于列表 l(右側(cè)最后一個(gè)參數(shù))的過(guò)濾器,帶有一個(gè) lambda 函數(shù),可以解讀為“具有等于 maxLikes 數(shù)量的‘likes’屬性的所有項(xiàng)目”。然后你用 來(lái)將其轉(zhuǎn)換為列表list。
添加回答
舉報(bào)