【问题标题】:Python array searchPython 数组搜索
【发布时间】:2020-06-20 03:18:40
【问题描述】:

我是11班的学生,下面的问题是20分,有人可以帮我解决吗

问题

world =[{"country":"India","state":"MH,Punjab,JH,UK,MP","area":"2344535"}]

当用户输入某个州名时查找打印其国家名。我有多个不同国家和州名的行

我在下面尝试过,但无法获得任何输出,有人可以解决它但没有输出

for i in world:
    if (i['state']=='Punjab'):
        print(i['country'])

【问题讨论】:

  • 第一个代码示例设置world 在语法上不正确。这真的来自最初的问题吗?
  • 是的,我也收到 SyntaxError: invalid syntax when trying to use your code
  • 'MH''Punjab''JH''UK''MP' 是一个字符串,'MHPunjabJHUKMP'
  • 我刚刚在这里输入,问题可能是我输入错误,但状态是在一个字符串中

标签: python arrays dictionary


【解决方案1】:

您应该检查输入是否在字符串state 中,因为state 是单个字符串并且您正在比较的'Punjab'=='MHPunjabJHUKMP' 是假的,您可以尝试使用in

world =[{'country':'India','state':'MHPunjabJHUKMP','area':'2344535'},
{'country':'Pakistan','state':'islamabadPunjabkarachisindhBalochistan','area':'2124765'} ,
{'country':'USA','state':'MINYrhode','area':'21232249885'},
{'country':'China','state':'MacauBengbuFuyang','area':'2872324753235'}
]
for i in world:
    if ('Punjab' in i['state']):
        print(i['country'])

如果您想比较输入的每种情况,例如'Punjab','punjab','PUNJAB',您应该将 then 转换为相同的情况(小写或大写),然后通过将条件更改为 if ('punjab'.lower() in i['state'].lower()): 来比较它们

【讨论】:

  • world =[{"country":"India","state":"MH,Punjab,JH,UK,MP","area":"2344535"}] 你能看到这个查询吗我在世界上有多行
  • 是的,这就是为什么你使用 for 循环来遍历多行
【解决方案2】:

您可以使用列表推导来获取列表或打印元素

[i['country'] for i in world if "Punjab" in i["state"]]

【讨论】:

    【解决方案3】:

    您可以为此使用列表推导,将列表解压缩到打印语句中

    world =[{"country":"India","state":"MH,Punjab,JH,UK,MP","area":"2344535"}]
    print(*[i['country'] for i in world if i["state"].count("Punjab") > 0])
    

    这将输出

    India
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-28
      • 2015-06-08
      • 1970-01-01
      相关资源
      最近更新 更多