riderg28
riderg28

Reputation: 15

how to generate tuples with key pair values from list which has only keys

I have list

keywords = ['car','bike','motorcycle', 'airplane', 'boat', 'boat']

and I have a api that returns data

[('bike','http://bikes.com/bikes'),
('boat':'http://boat.com/boat')]

so I need a tuple/list which can be like

[('car','none'),
('bike','http://bikes.com/bikes'),
('motorcycle','none'),
('airplane','none'),
('boat','http://boat.com/boat'),
('boat','http://boat.com/boat')]

Basically I was able to create with dictionary how ever I wanted to retain duplicates.

keyword_list = keyword.split(",")
response = requests.request("GET", url, headers=headers, params=querystring)

field_json = json.loads(response.text)
data = field_json['response']

field_json = json.loads(response.text)
data = field_json['response']

if len(data)> 0:
    list1 = {}

    for i in data['docs']:

        list1[i['keyword_s']]= i['url_s']


    print(list(list1.items()))


    keyword_dict = {k: None for k in keyword_list}

    keyword_dict.update(list1)


    return keyword_dict

Upvotes: 0

Views: 38

Answers (2)

Lior Cohen
Lior Cohen

Reputation: 5755

api = [('bike','http://bikes.com/bikes'),
('boat','http://boat.com/boat')]

keywords = ['car','bike','motorcycle', 'airplane', 'boat', 'boat']

ans = []
missing = set(keywords)
for k, v in api:
  if k in keywords:
    ans.append((k, v))
    missing.remove(k)

for miss in missing:
  ans.append((miss, None))

print(ans)

Upvotes: 0

Marcin
Marcin

Reputation: 4333

Your code:

keywords = ['car','bike','motorcycle', 'airplane', 'boat', 'boat']
api = [('bike','http://bikes.com/bikes'), ('boat', 'http://boat.com/boat')]

Solution:

api_dict = dict(api)
out = [api_dict.get(k) for k in keywords]

Upvotes: 2

Related Questions