Home > Software design >  Python str not list
Python str not list

Time:01-17

I wanted to obtain array of int like [1,2,3]
but got [dict_values([1]),dict_values([2]),dict_values([3])]

My code:

taken_employee_ids_dict = [{'id': 1}, {'id': 2}, {'id': 3}]
taken_employee_ids = [str(taken_employee_ids_list.values()) for taken_employee_ids_list in taken_employee_ids_dict]

in_values_check = ','.join(str(id) for id in taken_employee_ids)

And then in_values_check should go in:

qry = "SELECT CONCAT(first_name, ',', surname) AS full_name, id \
            FROM employees \
            WHERE date_terminated IS NULL \
            and id NOT IN "   "("   in_values_check   ")" \
            " ORDER BY first_name, surname ASC"

sorry i am new to python thanks

CodePudding user response:

For a problem like this, a list comprehension is a commonly applied solution:

taken_employee_ids_dict = [{'id': 1}, {'id': 2}, {'id': 3}]
in_values_check = [employee["id"] for employee in taken_employee_ids_dict]
print(in_values_check)

This outputs

[1, 2, 3]

CodePudding user response:

You can do it with lambda or list comprehension

With Lambda,

taken_employee_ids_dict = [{'id': 1}, {'id': 2}, {'id': 3}]
in_values_check = list(map(lambda x : x['id'], taken_employee_ids_dict))
print(in_values_check)

With List Comprehension,

taken_employee_ids_dict = [{'id': 1}, {'id': 2}, {'id': 3}]
in_values_check = [dic['id'] for dic in taken_employee_ids_dict]
print(in_values_check)

Output:

[1, 2, 3]

CodePudding user response:

You can use something like this.

taken_employee_ids_dict = [{'id': 1}, {'id': 2}, {'id': 3}]
final_list = []
for ele in taken_employee_ids_dict:
  for key,value in ele.items():
    final_list.append(value)
print(final_list)

CodePudding user response:

Try this:

taken_employee_ids = [str(employee["id"]) for employee in taken_employee_ids_dict]

in_values_check = ','.join(str(id) for id in taken_employee_ids)
  •  Tags:  
  • Related