【问题标题】:How to access the field value from rest output using python2?如何使用python2从rest输出中访问字段值?
【发布时间】:2019-03-06 20:36:39
【问题描述】:

这是我的结构:

[
            {
                "name": "ga0",
                "fullName": "gac0",
                "key": "office"
                "id" : "Apps/tex3435",
                "value" : "test2"
            },
            {
                "name": "gasec1",
                "fullName": "gasec1",
                "key": "PRINCIPAL"
                "id" : "Apps/tex3433",
                "value" : "test"
            }
]

我要获取keyPRINCIPAL的id。

【问题讨论】:

  • 你有一个由两个元素组成的列表,它们是字典,你想访问第二个字典的key 的值。你会怎么做?
  • 您想获取标题为“key”的键所指向的值吗?因为您的问题使 PRINCIPAL 似乎是关键,但被表示为一个值。
  • 你的问题很混乱。我发布的解决方案为您提供了对应值的键 - PRINCIPAL。但是现在你想要键是主体的“id”,没有意义,因为主体的键是“键”
  • 这是我的问题,我想获取键值 PRINCIPAL 的 id。我想要的只是得到这个值“Apps/tex3433”,它不是一直唯一的。唯一独特的是“key”:“PRINCIPAL”。

标签: python python-2.7 jython


【解决方案1】:

此解决方案返回r 中具有key = PRINCIPALl 条目列表。

l = [
            {
                "name": "ga0",
                "fullName": "gac0",
                "key": "office",
                "id" : "Apps/tex3435",
                "value" : "test2"
            },
            {
                "name": "gasec1",
                "fullName": "gasec1",
                "key": "PRINCIPAL",
                "id" : "Apps/tex3433",
                "value" : "test"
            }
]

r = filter(lambda k: k['key']=="PRINCIPAL", l)
print(r[0]['id'])

【讨论】:

  • 这段代码实际上并没有执行,因为过滤器对象不可下标,所以会抛出 TypeError。
  • 它将在 Python3 中抛出一个错误,因为r 将是一个不可下标的过滤器对象。您可以通过将其更改为list(filter(...)) 使其在 Python3 中工作。它应该可以在 Python2.7 中正常工作。
【解决方案2】:

获取值键的简单循环>“PRINCIPAL”:

d = [
{
"name": "ga0",
"fullName": "gac0",
"key": "office",
"id" : "Apps/tex3435",
"value" : "test2"
},   
{
"name": "gasec1",
"fullName": "gasec1",
"key": "PRINCIPAL",
"id" : "Apps/tex3433",
"value" : "test"
}]

for x in d:

    # x is a dictionary, so we now iterate over its key - value pair
    # Use x.iteritems() for Python 2

    for key, values in x.items():
        if values == 'PRINCIPAL':
            print(key)

# Using list comprehension
print([i for x in d for i, j in zip(x.keys(), x.values()) if j == 'PRINCIPAL'])

【讨论】:

  • 所以我想访问key principal的id字段值,我们该怎么做呢?
  • 我没听懂你。能详细点吗?
  • 我想从键为 PRINCIPAL 的第二个元素中解析 "id" : "Apps/tex3433"。
  • PRINCIPAL 不是键。这是字典中的值
  • 正确,所以我想为那个键解析 "id" : "Apps/tex3433",如果你看到有多个 id 值,实际输出有 100 个这样的元素,所以它将是 100 id 值,但我想解析具有 PRINCIPAL 值的元素键的 id 值。基本上我想从 100 中解析一个 id 值,而 PRINCIPAL 是唯一的键
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-03
  • 1970-01-01
相关资源
最近更新 更多