如何使用嵌套的dicts列表从dict中提取特定键值对

时间:2017-10-19 05:04:31

标签: python dictionary

我有以下数据结构,我希望通过搜索特定值来提取给定的键:值对。使用案例:我需要从字典中提取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:要解压缩的值太多

3 个答案:

答案 0 :(得分:1)

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

可能你想要items()。

答案 1 :(得分:1)

如果您使用的是python2,则可以使用items()

或者对于python3,它是dic = {'a':1,'b':2} for key,value in dic.items(): print(key) print(value)

他们会为你找到字典中的键值。

a
1

b
2

它会返回

<?php
$servername = "localhost";
$username = "root";
$password = "";

try {
    $conn = new PDO("mysql:host=$servername;dbname=dblogin", $username, $password);

    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    if (isset($_POST['submit'])) {
        $user_name = $_POST['user_name'];
        $user_email = $_POST['user_email'];
        $user_pass = $_POST['user_pass'];
        $hash = password_hash($user_pass, PASSWORD_DEFAULT);

        $stmt = $con->prepare("SELECT user_name FROM users WHERE user_name = :user_name");

        if($stmt->rowCount() > 0){
        echo "exists!";
        }

       else{  
        $insert = $conn->prepare("INSERT INTO users (user_name,user_email,user_pass) values(:user_name,:user_email,:user_pass)");

        $insert->bindparam(':user_name',$user_name);
        $insert->bindparam(':user_email',$user_email);
        $insert->bindparam(':user_pass',$hash);


        $insert->execute();    
      }
    }
 catch(PDOException $e)
    {
    echo "connection failed";
    }


?> 

答案 2 :(得分:0)

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

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