0
マップ:のpython3はジッパーを使用して辞書のリストに辞書を作成し、私は(A => B)のような辞書のリストに辞書を作成しようとしている
A:
{
"macro": ["{$URL}","{$USERNAME}","{$PASSWORD}"],
"value": ['https://1.1.1.1/sdk',"vmuser","[email protected]"]
}
B :
[
{
"macro": "{$PASSWORD}",
"value": "[email protected]"
},
{
"macro": "{$USERNAME}",
"value": "vmuser"
},
{
"macro": "{$URL}",
"value": 'https://' + hostip + '/sdk'
},
]
私の解決策は以下の通りですが、python2は私の仕事ですが、python3はそうではありません。
のPython 2.7.9
>>> cc=dict(macro=["{$URL}","{$USERNAME}","{$PASSWORD}"],value=['https://' + "123" + '/sdk',"vmuser","[email protected]"])
>>> ret=[]
>>> for k,v in cc.items():
... ret.append(map(lambda x:{k: x},v))
...
>>> ret
[[{'macro': '{$URL}'}, {'macro': '{$USERNAME}'}, {'macro': '{$PASSWORD}'}], [{'value': 'https://123/sdk'}, {'value': 'vmuser'}, {'value': '[email protected]'}]]
>>> ret[0]
[{'macro': '{$URL}'}, {'macro': '{$USERNAME}'}, {'macro': '{$PASSWORD}'}]
>>> zip(*ret)
[({'macro': '{$URL}'}, {'value': 'https://123/sdk'}), ({'macro': '{$USERNAME}'}, {'value': 'vmuser'}), ({'macro': '{$PASSWORD}'}, {'value': '[email protected]'})]
のPython 3.4.2
>>> cc=dict(macro=["{$URL}","{$USERNAME}","{$PASSWORD}"],value=['https://' + "123" + '/sdk',"vmuser","[email protected]"])
>>> ret=[]
>>> for k,v in cc.items():
... ret.append(map(lambda x:{k: x},v))
...
>>> ret
[<map object at 0x7faed946c1d0>, <map object at 0x7faed946c208>]
>>> ret=[]
>>> for k,v in cc.items():
... ret.append(map(lambda x:{k: x},v))
...
>>> ret
[<map object at 0x7faed946c390>, <map object at 0x7faed946c400>]
>>> c=zip(*ret)
>>> next(c)
({'macro': 'https://123/sdk'}, {'macro': '{$URL}'})
のpython3キーがマクロである理由私は思ったんだけど?行うに任意のより良い方法?
'ret.append(リスト(マップ(ラムダを使用しますが、リスト内包で
zip()
を使用することができます希望の形式でリストを取得するには、言わx:{k:x}、v))) 'と同じ結果を返す。 – Zety