【问题标题】:python API calls json response - lowest valuepython API调用json响应-最低值
【发布时间】:2022-01-02 00:06:05
【问题描述】:

我正在执行 API 调用并获得以下输出。但我实际上正在寻找的只是要显示的“活动隧道”的最低值。我知道“for”循环是答案,但在过去的 5 个小时里我尝试了很多东西,但没有接近我的目标。请帮帮我。

{u'histdata': [{u'Active Tunnels': 378.0,
                u'Utilization': 2.0,
                u'coverage': u'100 %',
                u'datetime': u'22/11/2021 16:00:49'},
               {u'Active Tunnels': 377.0,
                u'Utilization': 2.0,
                u'coverage': u'100 %',
                u'datetime': u'22/11/2021 16:01:49'},
               {u'Active Tunnels': 376.0,
                u'Utilization': 2.0,
                u'coverage': u'100 %',
                u'datetime': u'22/11/2021 16:02:49'},
               {u'Active Tunnels': 374.0,
                u'Utilization': 2.0,
                u'coverage': u'100 %',
                u'datetime': u'22/11/2021 16:03:49'}]

【问题讨论】:

  • 另外,每个键值对显示的“u”是什么?
  • 你可以使用json module ,那么就不需要forlink。关于 'u' 问题 - 你使用哪个 python 版本?因为这在python2中很常见link2
  • win服务器上的python2.7。要升级,服务器无法访问互联网,并且有很多批准和访问请求将永远持续下去。所以我必须利用我所拥有的。
  • 那么这需要将 unicode 解码为字符串。见similar issue

标签: python json api tolower


【解决方案1】:

你可以试试这个,仅供参考,它不是最佳解决方案,但我认为它会解决问题,u 用于 Unicode 这将为您提供具有最低 Active Tunnels 值的字典,您可以轻松获取该键的值

d = {u'histdata': [{u'Active Tunnels': 378.0, u'Utilization': 2.0, u'coverage': u'100 %', u'datetime': u'22/11/2021 16:00:49'}, {u'Active Tunnels': 377.0, u'Utilization': 2.0, u'coverage': u'100 %', u'datetime': u'22/11/2021 16:01:49'}, {u'Active Tunnels': 376.0, u'Utilization': 2.0, u'coverage': u'100 %', u'datetime': u'22/11/2021 16:02:49'}, {u'Active Tunnels': 374.0, u'Utilization': 2.0, u'coverage': u'100 %', u'datetime': u'22/11/2021 16:03:49'}]}

lowest = []
for line in d.get('histdata'):
    low = float(line.get('Active Tunnels'))
    if len(lowest) == 0:
        lowest = [line]
    else:
        if lowest[0].get('Active Tunnels')  > low:
            lowest = [line]
        else:
            pass

print(lowest)
# use this for lowest value
# print(lowest[0].get('Active Tunnels'))

[{'Active Tunnels': 374.0, 'Utilization': 2.0, 'coverage': '100 %', 'datetime': '22/11/2021 16:03:49'}]

你的数据最后缺少}

【讨论】:

  • 谢谢,我会努力的。
【解决方案2】:

与此同时,我只能隔离“活动隧道”的值并以整数格式打印它们。我现在只差一步,即获得最低值

data=r.json()
print(data['histdata'])
for vpn in data['histdata']:
    tunnel = int(vpn['Active Tunnels'])
    print(tunnel)

【讨论】:

    【解决方案3】:
    import json
    
    x = {
        u"histdata": [
            {
                u"Active Tunnels": 378.0,
                u"Utilization": 2.0,
                u"coverage": u"100 %",
                u"datetime": u"22/11/2021 16:00:49",
            },
            {
                u"Active Tunnels": 377.0,
                u"Utilization": 2.0,
                u"coverage": u"100 %",
                u"datetime": u"22/11/2021 16:01:49",
            },
            {
                u"Active Tunnels": 376.0,
                u"Utilization": 2.0,
                u"coverage": u"100 %",
                u"datetime": u"22/11/2021 16:02:49",
            },
            {
                u"Active Tunnels": 374.0,
                u"Utilization": 2.0,
                u"coverage": u"100 %",
                u"datetime": u"22/11/2021 16:03:49",
            },
        ]
    }
    
    x_json_list = json.dumps(x)
    d = json.loads(x_json_list)
    
    
    l = sorted(
        [{"Active Tunnels": dd["Active Tunnels"]} for zz in d.values() for dd in zz],
        key=lambda d: d["Active Tunnels"],
    )
    print(*l)
    
    # {'Active Tunnels': 374.0} {'Active Tunnels': 376.0} {'Active Tunnels': 377.0} {'Active Tunnels': 378.0}
    
    

    【讨论】:

    • 我复制粘贴了这段代码,我所做的只是改变了 print(*l) 中的 print(min(l)) 并且它有效。现在我必须将它与我的代码集成,因为“x”中的值是从 API 调用返回的,并且直接将它放在“x_json_list = json.dumps(x)”中会引发错误。我会努力解决的。
    • @JR21 您的 API 调用是否返回一个对象,其中您有一个像 x 这样的 obj 列表?如果是,x_json_list = json.loads(json.dumps(x)); l = [dd["Active Tunnels"] for el in x_json_list for json_like_el in el.values() for dd in json_like_el]; print(min(l))。我用; 分隔新行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-07
    • 2020-02-02
    • 2018-10-25
    相关资源
    最近更新 更多