gpt4 book ai didi

python - 如何返回包含属于多个字典列表的项目的最长字典列表的字典?

转载 作者:太空宇宙 更新时间:2023-11-04 00:49:06 25 4
gpt4 key购买 nike

这个问题真的很难表述,而且我也不知道如何解决这个问题。假设我有以下字典。

mydict = { u'10441':
[{u'quantity': 1, u'productId': 10441},
{u'quantity': 25, u'productId': 10451},
{u'quantity': 100, u'productId': 10461}],
u'10451':
[{u'quantity': 1, u'productId': 10451},
{u'quantity': 4, u'productId': 10461}]
}

如何返回与其他词典具有相同productId值的最大顶级子词典?例如,productId 10461 存在于 mydict 的两个词典(10441 和 10451)中。我想以编程方式获得以下内容,因为此字典 (10441) 的值包含三个项目 (dict)。

mydict1 = { u'10441':
[{u'quantity': 1, u'productId': 10441},
{u'quantity': 25, u'productId': 10451},
{u'quantity': 100, u'productId': 10461}]
}

通常我能够解决这类问题,但出于某种原因,我在解决这个问题时遇到了麻烦。有没有一种方法可以使用过滤器或嵌套的字典理解来惯用地解决这个问题?

最佳答案

您的示例中只有两个顶级词典,很难看出您真正想要的是什么。我们在谈论多少部顶级词典?其中有多少人必须共享一个 Id?让我们看看如何通过成对比较有效地做到这一点,希望您知道从那里去哪里。

首先,对每个顶级字典中的Id做一个索引(一组)。

myindex = dict()
for k, vals in mydict.items():
myindex[k] = set(d["productId"] for d in vals)

现在我们将比较索引。要查看两个词典是否具有共同的 ID,请取它们的交集:

mydict1 = dict()
for key1, key2 in itertools.combinations(mydict, 2):
if myindex[key1].intersection(myindex[key2]):
bigkey = key1 if len(mydict[key1]) > len(mydict[key2]) else key2
mydict1[bigkey] = mydict[bigkey]

关于python - 如何返回包含属于多个字典列表的项目的最长字典列表的字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37933539/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com