2016-07-13 20 views
2

私は以下のような辞書のリストを返すキーワードを使用しています。私が辞書をループすると値を得ることができます。たとえば、辞書のリストから辞書値にアクセスする

${vPools} =  list all vpools 
: FOR ${Item} IN @{vPools} 
\ ${vPoolID} =  ${Item["VPoolID"]} 

ルーピングなしで値に直接アクセスする方法はありますか?この商品をお持ちですか?マーケットプレイスに出品する

${vPoolID} = @{vPools[0]}["VPoolID"] 

最初のリストを見る私は別のものを試し続けますが、正しいレシピを見つけることはできません。

17:23:30.815 INFO [ 
    { 
     "GroupType": 3, 
     "GroupTypeEnum": 3, 
     "Name": "GS - Flash - Protection: 1 - QoS: Gold", 
     "OptimizationSetting": 0, 
     "OptimizationSettingEnum": 0, 
     "PhysicalPoolID": "7efaf334-b723-4be6-af56-3a626562b553", 
     "ProtectionSetting": 1, 
     "QoSClassPriorityID": 1, 
     "Secured": false, 
     "TotalCapacity": 0, 
     "UsedCapacity": 0, 
     "VPoolID": "be7d518e-9851-4ad5-bd59-c7987fc3dd9b" 
    }, 
    { 
     "GroupType": 3, 
     "GroupTypeEnum": 3, 
     "Name": "GS - Flash - Protection: 1 - QoS: Silver", 
     "OptimizationSetting": 0, 
     "OptimizationSettingEnum": 0, 
     "PhysicalPoolID": "7efaf334-b723-4be6-af56-3a626562b553", 
     "ProtectionSetting": 1, 
     "QoSClassPriorityID": 2, 
     "Secured": false, 
     "TotalCapacity": 0, 
     "UsedCapacity": 0, 
     "VPoolID": "1a82e650-589e-4077-878b-48eea7211278" 
    }, 
    { 
     "GroupType": 3, 
     "GroupTypeEnum": 3, 
     "Name": "GS - Flash - Protection: 1 - QoS: Bronze", 
     "OptimizationSetting": 0, 
     "OptimizationSettingEnum": 0, 
     "PhysicalPoolID": "7efaf334-b723-4be6-af56-3a626562b553", 
     "ProtectionSetting": 1, 
     "QoSClassPriorityID": 3, 
     "Secured": false, 
     "TotalCapacity": 0, 
     "UsedCapacity": 0, 
     "VPoolID": "5a082095-cbb5-460a-a0fc-0a8dc90d007d" 
    } 
]() 
+0

あなたと2番目の回答はどちらも魅力的でした:-) – Perry

答えて

0

コレクションライブラリにキーワードがあります。

*** Settings *** 
Library Collections 

*** Test Cases *** 
Dictionary 
    ${dict1}=  Create Dictionary  GroupType=3 VPoolID=be7d518e-9851-4ad5-bd59-c7987fc3dd9b 
    ${dict2}=  Create Dictionary  GroupType=3 VPoolID=1a82e650-589e-4077-878b-48eea7211278 
    ${vPools}=  Create List   ${dict1}  ${dict2} 
    ${vPoolID}= Get From Dictionary @{vPools}[0] VPoolID 
+0

私は答えたのは、変数に値を代入するのではなく、単純に等しくなければならない辞書から取得するには、余分な行と変数が必要です。 – ombre42

+0

これと最初のコメントはどちらもうまくいった!多くのおかげで:-)私の試みは、最初の答えのように見える傾向があった、あなたは完全に異なっていた。どちらも教育的だった。 Robot Frameworkを初めて使用しています。 – Perry

+0

また、ombre42の答え – Pekka

2

あなたがextended variable syntaxを使用する場合は、[はい、あなたがネストされたコレクションにアクセスすることができます:私はそれはあなたが探しているものだと思います。これは、DatabaseLibraryとSudsLibraryで作業する場合には非常に便利です。中かっこの中にキーとインデックスを入れ、キーを引用符で囲んでください。

List of Dictionaries 
    ${a} Create Dictionary a=1 b=2 
    ${b} Create Dictionary x=5 y=7 
    ${stuff} Create List ${a} ${b} 
    ${item} Set Variable ${stuff[0]['b']} 
    Should Be Equal ${stuff[1]['x']} 5 

ので、試してみてください。

${vPoolID} Set Variable ${vPools[0]["VPoolID"]} 

を使用すると、単一の項目を参照しているため、@を使用しますが、代わりに$を使用しないでください。

+0

から辞書のリストにアクセスする新しい方法を学んだ、チャンピオンのように働いた! – Perry

関連する問題