【问题标题】:Check if a dictionary contain data true of false, then send a response back检查字典是否包含真假数据,然后发回响应
【发布时间】:2018-03-02 09:27:53
【问题描述】:

这是一个 json 响应,我从我的 Web 客户端视图中获取,我想检查此列表字典是否包含数据。我该如何继续?谢谢

 [
{
    "id": 41,
    "commercialOffice": false,
    "haveStoreRooms": false,
    "workFromHome": false,
    "seperateOffice": false,
    "receptionArea": false,
    "standardInsurance": false,
    "teamAudit": false,
    "auditReport": false,
    "receptionist": false,
    "qualityAssuranceTeam": false,
    "subContractor": null,
    "employeeIdentityCard": false,
    "employeeUniform": false,
    "insuranceList": "",
    "company": null
},
{
    "id": 45,
    "commercialOffice": false,
    "haveStoreRooms": false,
    "workFromHome": false,
    "seperateOffice": false,
    "receptionArea": false,
    "standardInsurance": false,
    "teamAudit": false,
    "auditReport": false,
    "receptionist": false,
    "qualityAssuranceTeam": false,
    "subContractor": null,
    "employeeIdentityCard": false,
    "employeeUniform": false,
    "insuranceList": "0",
    "company": 71
},
{
    "id": 46,
    "commercialOffice": true,
    "haveStoreRooms": true,
    "workFromHome": false,
    "seperateOffice": false,
    "receptionArea": false,
    "standardInsurance": true,
    "teamAudit": false,
    "auditReport": false,
    "receptionist": false,
    "qualityAssuranceTeam": false,
    "subContractor": null,
    "employeeIdentityCard": true,
    "employeeUniform": false,
    "insuranceList": "0",
    "company": 68
},

]

我在想这个

def (self):
   dic = {'key1': ['value1', 'value2'],
       'key2':  'value77' }
       values = dic.values()
      'value77' in [x for v in values for x in v if type(v)==list] or 
      'value77' in values

【问题讨论】:

  • 您要检查什么?请正确发布问题。要检查 dict 中的数据,您可以使用 IN 运算符
  • 我想检查一下,只要每个键是否包含值,然后返回响应。

标签: python json django


【解决方案1】:

这取决于您所说的数据是什么意思。它有任何 dict 键吗?它是给定的 dict 键吗?

空字典在 Python 中是错误的,因此只需在列表中调用 all() 即可告诉您每个字典是否至少有一个键值对:

>>> all( [ {1:2}, {'A':'B'} ] )
True
>>> all( [ {1:2}, {'A':'B'}, {}, {3:4}] )
False

如果您想检查给定键是否存在于每个字典中,您可以将列表推导与 get 结合起来。

【讨论】:

  • 嗨,埃里克,杜米尼尔。请我添加更多信息...是的。我已经完成了。但是,仍然没有解决我的问题。
  • @Patcho:你想具体检查什么?该代码示例似乎不适合您的数据。您的 dict 值不是列表。
  • 检查我的更新答案
  • @Eric 实际上是一个 json 数据包,我得到了。所以我想检查是否每个子类都包含数据,然后返回 True 或 False。
  • @Patcho:您接受false 或空字符串作为值吗?
【解决方案2】:

使用 in 运算符:

if b in a:

演示:

>>> a = {'foo': 1, 'bar': 2}
>>> 'foo' in a
True
>>> 'spam' in a
False

@Eric Duminil 解释的那个是您回答的更好的解决方案

根据您的要求更新:

dic_3 = {'key1': ['value1', 'value2'],'key2':  '','key3':None }
for key, value in dic_3.iteritems():
    if value is None or value =='':
        print key ,"is Empty"

输出:

key3 is Empty
key2 is Empty

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-27
    • 1970-01-01
    • 1970-01-01
    • 2013-10-27
    • 2013-03-04
    • 1970-01-01
    • 2018-07-24
    • 2020-07-10
    相关资源
    最近更新 更多