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())