gpt4 book ai didi

python - 如何初始化先验未知数量的列表

转载 作者:行者123 更新时间:2023-11-30 23:02:07 24 4
gpt4 key购买 nike

我正在尝试使用 python 重新构建 json 文件。 json 是一个 json 数组,其中每个元素都是一个字典。在这些字典中,某些对我来说很重要的键有很多重复的值,所以我想将每个字典的所有其他键放入一个数组中,以获得重要键的相同值,创建一个具有不同结构的json .

然后,对于某个键的每个不同值,我想初始化一个数组。问题是该键的不同值的数量是先验未知的。我想要的代码示例:

data = json.loads(originalJson)

# List of different authors for key ['author']
authors = []
for x in data:
if x['author'] not in authors:
authors.append(x['author'])

newData = []
for author in authors:
for x in data:
if x['author'] == author:
# And here is the code that initialize
# a different array for each author

P.S.:如果您知道重新构造 json 的更有效方法,请给我一个链接、示例或其他内容。你会注意到我对 python 是“非常初学者”。

编辑:输入和输出的示例

originalJson = [{ke1 : value, key2 : value, key3 : value,...},{...},....]

wantedJson = [{key1 : valueX,[{key2 : value, ...},{key3 : value,...},...]},
{key1 : valueY, [...]},{key1 : valueZ,[...]}]

最佳答案

您可以使用collections.defaultdict ,像这样

from collections import defaultdict
d = defaultdict(list)
for x in data:
d[x['author']].append(x)

只要找到不在字典中的作者,就会创建一个新列表并将其用作值,并将当前项目附加到列表中。

<小时/>

你可以用普通的字典做同样的事情,就像这样

d = {}
for x in data:
d.setdefault(x['author'], []).append(x)
<小时/>

如果您想在从文件中读取作者时保持作者的顺序,则可以使用 collections.OrderedDict ,像这样

from collections import OrderedDict
d = OrderedDict
for x in data:
d.setdefault(x['author'], []).append(x)

关于python - 如何初始化先验未知数量的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34654716/

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