【问题标题】:how to extract a specific key value pair from a dict with a nested list of dicts如何从具有嵌套字典列表的字典中提取特定键值对
【发布时间】:2017-10-19 13:13:59
【问题描述】:

我有以下数据结构,我想通过搜索特定值来提取给定键:值对。用例:我需要从字典中提取 u'LOB_B': u'mcsmsg.example.net'。

{u'status': u'successful',
 u'availableFqdnList': [
     {u'LOB_A': u'pcload.us.example.net'},
     {u'LOB_B': u'mcsmsg.example.net'},
     {u'LOB_B': u'gtxd.example.net'},
     {u'LOB_B': u'diamond.example.net'}]}

for key, value in my_dict.values():
    if value == 'mcsmsg.example.net':
        print("Print key value pairs for available FQDN list")
        print key, "=", value

错误 = 对于 my_dict.values() 中的键、值: ValueError:解压的值太多

【问题讨论】:

  • 您的字典无效。它不能包含重复的键。

标签: python dictionary


【解决方案1】:

我不认为 values() 是你想要的功能。

可能你想要 items() 代替。

【讨论】:

    【解决方案2】:

    如果你使用python2,你可以使用iteritems()

    或者对于python3,它是items()

    他们会为你迭代字典中的键、值。

    dic = {'a':1,'b':2}
    
    for key,value in dic.items():
        print(key)
        print(value)
    

    它会返回

    a
    1
    
    b
    2
    

    【讨论】:

      【解决方案3】:

      作为一种简单易懂的方式来完成这项工作

      d = {u'status': u'successful', 
              u'availableFqdnList': [{u'LOB_A': u'pcload.us.example.net'}, 
                                     {u'LOB_B': u'mcsmsg.example.net'}, 
                                     {u'LOB_B': u'gtxd.example.net'}, 
                                     {u'LOB_B': u'diamond.example.net'}]}
      
      for val in d['availableFqdnList']:
          if val.values()[0] == "mcsmsg.example.net":
              print("%s=%s" %(val.keys()[0], val.values()[0]))
      

      【讨论】:

      • 这非常有效。 Geeze 看到代码后似乎很简单。谢谢!
      猜你喜欢
      • 1970-01-01
      • 2021-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-21
      • 1970-01-01
      • 1970-01-01
      • 2018-08-30
      相关资源
      最近更新 更多