【问题标题】:How to check values in dictionary with multiple data如何检查具有多个数据的字典中的值
【发布时间】:2013-09-05 17:10:58
【问题描述】:

如果列表包含多组数据,如何找到特定值。

例子:

[{u'first_name': u'a, u'last_name': u'ab'}, {u'first_name': u'c', u'last_name': u'cd',}]

这是我在获取 json 时得到的响应。

我想检查用户“a”(名字)是否是姓氏为“ab”的人。但是出现的顺序并不总是相同的。

我正在 python/robot 框架中编写此代码。

谁能帮忙?

【问题讨论】:

  • 请澄清。如果您有 两个 用户“a”,并且其中只有一个具有姓氏“ab”,您期望什么输出?如果有多个姓氏“ab”怎么办?如果他们都不做怎么办?如果没有用户“a”怎么办?
  • 这是一个列表,不是字典。因此,检查列表中的每个项目。
  • 我需要更新其中一个用户名并检查正确的名称是否已更新,但也可能会添加新名称,因此我无法确认订单。我想检查“u'first_name'”的值是否为 C。但我想确保它适用于 { u'first_name': u'c', u'last_name': u'cd',} user

标签: python list sorting key robotframework


【解决方案1】:

如果我理解正确,您想检查某个姓氏是否已更新为正确的名字。由于顺序未知,并且名字可能会更改,因此姓氏也必须是唯一的。如果您必须为此使用字典列表,则需要循环:

userlist = [{u'first_name': u'a', u'last_name': u'ab'}, 
            {u'first_name': u'c', u'last_name': u'cd',}]

for user in userlist:
    if user['last_name'] == 'cd':
       if user['first_name'] == 'c':
           print "correct first name"
       else:
           print "incorrect first name"

但是,如果您有唯一的姓氏,那么将用户存储为字典会更有效,其中姓氏作为键,名字作为值:

if userdict['cd'] == 'c':
    print "correct first name"
else:
    print "incorrect first name"

【讨论】:

  • 这不起作用,因为它无法识别列表的“姓氏”。我收到的错误是该值必须是整数
  • last_name 不是列表,而是字典键。鉴于您的示例数据,上面的代码对我有用。你需要详细说明你是如何得到这样一个错误的——你是如何使用last_name的?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-14
  • 2015-11-27
  • 2016-12-28
  • 1970-01-01
  • 2019-03-22
相关资源
最近更新 更多