Python поиск по массиву - PullRequest
       0

Python поиск по массиву

0 голосов
/ 20 июня 2020

Я ученик 11 класса, ниже вопрос на 20 баллов. Может кто-нибудь, пожалуйста, помогите мне решить его

вопрос

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

найти, когда пользователь вводит какое-либо название штата название страны. У меня есть несколько строк с разными названиями страны и штата

Я попробовал это ниже, но не могу получить какой-либо результат, может кто-нибудь решить его, но не получить результат

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

Ответы [ 3 ]

0 голосов
/ 20 июня 2020

Вы можете использовать понимание списка, чтобы получить список, или можете распечатать элементы

[i['country'] for i in world if "Punjab" in i["state"]]
0 голосов
/ 21 июня 2020

Вы можете использовать для этого понимание списка с распаковкой списка в оператор печати

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
0 голосов
/ 20 июня 2020

Вы должны проверить, находится ли ввод в строке state, поскольку state - это одна строка, и вы сравнивали 'Punjab'=='MHPunjabJHUKMP', что неверно, вы можете попробовать использовать в :

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', вы должны преобразовать его в тот же регистр (нижний или верхний), а затем сравнить их, изменив свое условие на if ('punjab'.lower() in i['state'].lower()):

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...