私が書いているコードをいくつか持っていて、APIコールのしたことを真似しようとしています。ただし、同じキーを持つAPI呼び出しに入れることができる複数のエントリがあります。たとえば、メソッドへの呼び出しを見ると、複数のnames[]
がAPI呼び出しの一部として渡されます。ここで複数の辞書エントリを1つのキーに結ぶ
names[]": ["System/CPU/User/percent", "System/CPU/System/percent"]
持っているコードです -
def new_relic_api(api_key, query_function, datapoints):
temp = {}
if (datapoints != None):
for k, v in datapoints.iteritems():
if isinstance(v, list):
for s in v:
print (k)
print s
temp[k] = s
else:
print k
print v
temp[k] = v
r = requests.get(url, headers=headers, data=temp)
d = {"names[]": ["System/CPU/User/percent", "System/CPU/System/percent"], "values[]": "average_value", 'from': '2016-11-30T18:31:00+00:00', 'to': '2016-11-30T19:01:00+00:00', 'summarize': 'true'}
new_relic_api("${api_key}", "/servers/{server_id}/metrics/data.json", d)
はしかし、実際の辞書は要求だけコールの内側に二names[]
値をプリントアウトされます。これをどうすれば解決できますか?
items = {}
k = "names[]"
for s in ["System/CPU/User/percent", "System/CPU/System/percent"]:
items[k] = s
# items == {"name[]": "System/CPU/System/percent"}
それはs
書き換えitems[k]
とitems
の最後の値が常に維持することを意味します:あなたが行に辞書temp
に"names[]"
からではなく、同じキーを持つtemp[k] = s
異なる値を書き込むためだ
おかげ