首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据某个值拆分字典列表

如何根据某个值拆分字典列表
EN

Stack Overflow用户
提问于 2022-09-30 07:12:19
回答 1查看 52关注 0票数 0

我有一个清单l1

代码语言:javascript
复制
l1 = [
{"kubernetes_pod_name": "1", "resolution_ms": 10, "value": 100},
{"kubernetes_pod_name": "2", "resolution_ms": 10, "value": 200},
{"kubernetes_pod_name": "3", "resolution_ms": 10, "value": 300},
{"kubernetes_pod_name": "4", "resolution_ms": 10, "value": 400},
{"kubernetes_pod_name": "1", "resolution_ms": 10, "value": 102},
{"kubernetes_pod_name": "2", "resolution_ms": 10, "value": 302},
{"kubernetes_pod_name": "3", "resolution_ms": 10, "value": 567},
{"kubernetes_pod_name": "4", "resolution_ms": 10, "value": 850},
...]

我怎样才能制作一种丙酮溶液来将l1转换成下面的样子呢?

代码语言:javascript
复制
l1 = [
[{"kubernetes_pod_name": "1", "resolution_ms": 10, "value": 100},
{"kubernetes_pod_name": "2", "resolution_ms": 10, "value": 200},
{"kubernetes_pod_name": "3", "resolution_ms": 10, "value": 300},
{"kubernetes_pod_name": "4", "resolution_ms": 10, "value": 400}],
[{"kubernetes_pod_name": "1", "resolution_ms": 10, "value": 102},
{"kubernetes_pod_name": "2", "resolution_ms": 10, "value": 302},
{"kubernetes_pod_name": "3", "resolution_ms": 10, "value": 567},
{"kubernetes_pod_name": "4", "resolution_ms": 10, "value": 850}]
...]

我正试图根据它们的出现结构将其放入嵌套列表中,并将需要将这些数据用于将来的显示。

分裂的标准是基于kubernetes_pod_name的值,而不仅仅是它自己的价值,而是它的部分,在这里,Kubernetes_node_name 1,2,3,4出现了,然后开始重复,从而对即将出现的复制进行分割。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-30 07:24:26

在这里,简单的逻辑是计算'kubernetes_pod_name'的唯一值并相应地使组

注意事项:期望所有的pod名称都将出现在行中

代码:

代码语言:javascript
复制
uni = len(set([l['kubernetes_pod_name'] for l in l1]))
[l1[i:i+uni] for i in range(0, len(l1), uni)]

输出:

代码语言:javascript
复制
[[{'kubernetes_pod_name': '1', 'resolution_ms': 10, 'value': 100},
  {'kubernetes_pod_name': '2', 'resolution_ms': 10, 'value': 200},
  {'kubernetes_pod_name': '3', 'resolution_ms': 10, 'value': 300},
  {'kubernetes_pod_name': '4', 'resolution_ms': 10, 'value': 400}],
 [{'kubernetes_pod_name': '1', 'resolution_ms': 10, 'value': 102},
  {'kubernetes_pod_name': '2', 'resolution_ms': 10, 'value': 302},
  {'kubernetes_pod_name': '3', 'resolution_ms': 10, 'value': 567},
  {'kubernetes_pod_name': '4', 'resolution_ms': 10, 'value': 850}]]

使用递归:

代码语言:javascript
复制
def recur(lst, ls, new):
    if len(ls)<=1:
        return new + [lst[ls[0]:]]
    else:
        new = new + [lst[ls[0]:ls[1]]]
    return recur(lst, ls[1:],new)

recur(l1, list(range(0, len(l1), uni)), [])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73905179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档