在python嵌套字典

时间:2017-04-12 12:03:52

标签: python dictionary

所以当我打印字典时,它会给出:

u'Tags': [{u'Value': 'stone', u'Key': 'primary-key'}, {u'Value': 'hello world', u'Key': 'Name'}, {u'Value': '123 Street', u'Key': 'Address'}]

我需要Key' Name' i-e" Hello world"

我试过了:

for t in Tags:
    print(t["Name"])

但得到错误:

KeyError: 'Name'

4 个答案:

答案 0 :(得分:2)

在字典中,条目Tags指向具有键和值作为嵌套条目的对象列表。因此,访问不是直接的,需要搜索密钥。它可以使用简单的列表理解来完成:

d = {u'Tags': [{u'Value': 'stone', u'Key': 'primary-key'},
               {u'Value': 'hello world', u'Key': 'Name'},
               {u'Value': '123 Street', u'Key': 'Address'}]}

name = next((v for v in d['Tags'] if v['Key'] == 'Name'), {}).get('Value')

答案 1 :(得分:1)

'Name'这里不是关键,它是一个值。您的词典都包含u'Key'u'Value'的键,这可能会让您感到有些困惑。

这应该适用于您的示例:

for t in Tags:
    if t['Key'] == 'Name':
        print t['Value']

答案 2 :(得分:0)

如果您想找到“密钥名称”:

findYourWord ='hello world'

for dictB in dictA[u'Tags']:
    for key in dictB:
        if dictB[key]== findYourWord:
            print(key)

希望这对你有所帮助。祝你有愉快的一天。

答案 3 :(得分:0)

在你的内部词典中,唯一的键是'Key'和'Value'。尝试创建一个函数来查找所需键的值,尝试:

def find_value(list_to_search, tag_to_find):
    for inner_dict in list_to_search:
        if inner_dict['Key'] == tag_to_find:
            return inner_dict['Value']

现在:

In [1]: my_dict = {u'Tags': [{u'Value': 'stone', u'Key': 'primary-key'}, {u'Value': 'hello world', u'Key': 'Name'}, {u'Value': '123 Street', u'Key': 'Address'}]}


In [2]: find_value(my_dict['Tags'], 'Name')
Out[2]: 'hello world'