嵌套字典中重复键但值不同

0 投票
3 回答
2813 浏览
提问于 2025-04-16 22:35

我在从下面这个嵌套字典中提取每个 $t 的值时遇到了困难。我需要做的是把每一对键值对单独提取出来,然后添加到另一个字典里。

这是JSON数据:

"breed": [
            {
                "$t": "Chihuahua"
            },
            {
                "$t": "Jack Russell Terrier"
            }
         ]

顺便说一下,我使用的是Python 2.7

3 个回答

0

这是不是你想要的呢?(我觉得这要看你想怎么处理多个值对应同一个$t的情况。)

nestedDict = { "breed": [
                        {
                         "$t": "Chihuahua"
                         },
                         {
                          "$t": "Jack Russell Terrier"
                          }
                         ]
              }

dictEntries = [ (k, v) for dicList in nestedDict.values() for d in dicList for (k, v) in d.items() ]

flattenedDict = { }
for k, v in dictEntries:
    flattenedDict.setdefault( k, [] ).append( v )

print ( flattenedDict )

这样可以得到:

{'$t': ['Chihuahua', 'Jack Russell Terrier']}
0

我不太明白你想做什么。如果你是想从JSON创建一个Python字典,并通过“$t”这个键来获取它的值,下面是做法(如果不是这个意思,请留言,我会删除这个回答)。

# Many thanks to Dogbert, whose answer I copied the list comprehension from 
# (changing a few things), and many thanks to slothrop, whose answer gave me 
# ideas for my variable name. Not for those people, I would have used a silly 
# name like `thing` and would have used a for loop.
import json

nested_dict = json.loads('{"breed": [{"$t": "Chihuahua"}, '
                                    '{"$t": "Jack Russell Terrier"}]}')
[dic["$t"] for dic in nested_dict["breed"]]

如果你需要获取字典里面每个字典的键值对:

key_and_value_pairs = []
for dic in nested_dict["breed"]:
    key_and_value_pairs.extend(dic.items())
1

像这样吗?

>>> o = [ { "$t": "Chihuahua" }, { "$t": "Jack Russell Terrier" } ]
>>> [ item["$t"] for item in o ]
['Chihuahua', 'Jack Russell Terrier']
>>>

撰写回答