为了账号安全,请及时绑定邮箱和手机立即绑定

如何根据值打印字典

如何根据值打印字典

Qyouu 2023-09-05 15:22:26
这是字典列表。它基本上是一个示例数据,但列表中还有更多项目。我基本上想使用字典的值来获取字典。[{'status_id': '153080620724_10157915294545725', 'status_message': 'Beautiful evening in Wisconsin- THANK YOU for your incredible support tonight! Everyone get out on November 8th - and VOTE! LETS MAKE AMERICA GREAT AGAIN! -DJT', 'link_name': 'Timeline Photos', 'status_type': 'photo', 'status_link': 'https://www.facebook.com/DonaldTrump/photos/a.488852220724.393301.153080620724/10157915294545725/?type=3', 'status_published': '10/17/2016 20:56:51', 'num_reactions': '6813', 'num_comments': '543', 'num_shares': '359', 'num_likes': '6178', 'num_loves': '572', 'num_wows': '39', 'num_hahas': '17', 'num_sads': '0', 'num_angrys': '7'}{'status_id': '153080620724_10157914483265725', 'status_message': "The State Department's quid pro quo scheme proves how CORRUPT our system is. Attempting to protect Crooked Hillary, NOT our American service members or national security information, is absolutely DISGRACEFUL. The American people deserve so much better. On November 8th, we will END this RIGGED system once and for all!", 'link_name': '', 'status_type': 'video', 'status_link': 'https://www.facebook.com/DonaldTrump/videos/10157914483265725/', 'status_published': '10/17/2016 18:00:41', 'num_reactions': '33768', 'num_comments': '3644', 'num_shares': '17653', 'num_likes': '26649', 'num_loves': '487', 'num_wows': '1155', 'num_hahas': '75', 'num_sads': '191', 'num_angrys': '5211'}]我想要最大数量的值'num_likes'并打印status_id具有最高 的特定字典的'num_likes'。我还想了解如何实现这一点的方法或过程。我基本上使用列表来获取值,然后找到最大值,还有其他方法吗?输出应该只是status_id.
查看完整描述

4 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

在这里,我将您的字典列表声明为变量list_of_objs。由于该num_likes值string-type用于int(obj['num_likes'])转换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


查看完整回答
反对 回复 2023-09-05
?
茅侃侃

TA贡献1842条经验 获得超21个赞

你可以试试这个:

k=max([i['num_likes'] for i in d])
[i['status_id'] for i in d if i['num_likes']==k][0]


查看完整回答
反对 回复 2023-09-05
?
开满天机

TA贡献1786条经验 获得超13个赞

声明list_of_status_ids = [{}, {} ...]


迭代 list_of_status_ids 并添加一个字典,其中键为num_likes ,值作为status_id列表。

然后获取最大num_likes并获取与该最大 num_likes 对应的所有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()))


查看完整回答
反对 回复 2023-09-05
?
MYYA

TA贡献1868条经验 获得超4个赞

使用更简单的列表作为示例:


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}]. 这里的问题是,如果你可以有多个“最大相似项”。这就是该函数返回一个列表的原因。要打印所有 ID,您可以:


print([item['id'] for item in result])

如果您确定不超过一个项目,或者您恰好需要一个(可能是第一个),您可以执行以下操作:


result = list(filter(lambda item: item['likes'] == max([item['likes'] for item in l]), l))


result = result[0]['id']

print(result)

3这将在示例中打印。


现在如何解决这个问题:首先你需要最大的喜欢数:


max([item['likes'] for item in l])

称之为 maxLikes。然后您需要获取具有此点赞值的所有项目:


filter(lambda item: item['likes'] == maxLikes, l)

这是一个应用于列表 l(右侧最后一个参数)的过滤器,带有一个 lambda 函数,可以解读为“具有等于 maxLikes 数量的‘likes’属性的所有项目”。然后你用 来将其转换为列表list。


查看完整回答
反对 回复 2023-09-05
  • 4 回答
  • 0 关注
  • 133 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信