Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 具有重复键但值不同的嵌套字典_Python_Json_Dictionary - Fatal编程技术网

Python 具有重复键但值不同的嵌套字典

Python 具有重复键但值不同的嵌套字典,python,json,dictionary,Python,Json,Dictionary,我很难在下面的嵌套字典中返回$t的每个实例的值。我需要做的是拉取每个键值对,并将它们分别添加到另一个字典中 以下是JSON: "breed": [ { "$t": "Chihuahua" }, { "$t": "Jack Russell Terrier" } ] 顺便说一下,我正在使用Python2.7之类的东西 &g

我很难在下面的嵌套字典中返回
$t
的每个实例的值。我需要做的是拉取每个键值对,并将它们分别添加到另一个字典中

以下是JSON:

"breed": [
            {
                "$t": "Chihuahua"
            },
            {
                "$t": "Jack Russell Terrier"
            }
         ]
顺便说一下,我正在使用Python2.7之类的东西

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

这就是你要找的吗?(这取决于您希望如何处理与同一
$t
对应的多个值)

这将为您提供:

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

我不明白你想干什么。如果您想从JSON创建Python dict,请使用“$t”键获取其值,如图所示(如果不是,请注释,我删除答案)

如果您需要dict中每个dict的键值对:

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

尝试了类似的操作,但在运行它时,我似乎总是遇到一个错误“TypeError:字符串索引必须是整数”。这个示例非常适合json,但在应用程序上下文中运行它时,我遇到了一个错误“unicode”对象没有属性“items”。当我从命令行复制输出时,我得到的一个例子是:'brides':{u'$t':u'homeline Short Hair'},因此,输出是unicode格式的。有什么想法吗?再次感谢。我想我现在真的很接近了!顺便说一句,当我在应用程序中循环时,在“品种”下输出的项目数是可变的。不确定这是否有区别。啊哈:所以在这个-<代码>'brides':{u'$t':u'dominal Short Hair'}-与'brides'关联的值是一个单独的字典。但在你原来的帖子中,这是一个字典列表。我认为这是区别,而不是unicode特有的任何东西。
# 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())