Así que tengo una pregunta sobre la comprobación de la lista. Estoy estableciendo un sistema de contratación, en el que tengo individuos, su tasa y las habilidades que tienen. Estoy tratando de crear una función que me permita ingresar dos personas, y básicamente, la salida debe dar los valores, sin duplicados. Tome nota de que los individuos mismos son tuplas. Con habilidades y costo.
He intentado habilidades de codificación individualmente duras, pero al parecer eso frustraría el propósito si se implementa alguna habilidad nueva.
También he intentado recorrer pero todavía no puedo obtener los valores para leer de la segunda persona.
jess = (["php", "java"], 200)
clark = (["php", "c++", "go"], 1000)
john = (["lua"], 500)
cindy = (["php", "go", "word"], 240)
candidates = [jess, clark, john, cindy]
project = ["php", "java", "c++", "lua", "go"]
def skills(candidates): ## This command is supposed to find the possible skills of all the individuals.
skillset = [] ## empty list to contain the skills that are going to be appended
for x in (candidates): ## so basically the x represents the tuple set
skillset.append(x[0]) ## the tuple selection represents the skills of the given candidates
if x[0] not in skillset: ## if the selected component of the tuple is not in the skill list, then the component should be removed
skillset.append(x[0])
else:
return skillset
return skillset
(print(skills([cindy, clark])))
4 respuestas
Podrías usar conjuntos, evitan duplicados.
def skills(candidates):
skillset = set()
for x in candidates:
skillset.update(x[0])
return list(skillset)
Parece que está tratando de ver si algunos candidatos aportan suficientes habilidades para ejecutar un proyecto.
Este código te ayudará en tu camino:
# candidates and project the same as posted
def skills(candidates): ## This command is supposed to find the possible skills of all the individuals.
skillset = set() ## empty set to contain the skills that are going to be appended
for x in candidates: ## iterate over candidates
for skill in x[0]: ## iterate of each candidates skills
skillset.add(skill)
return skillset
availableSkills = skills([jess, clark, john])
requirement = set(project)
print(availableSkills)
print(requirement)
print(availableSkills >= requirement)
Salida:
{'go', 'c++', 'lua', 'java', 'php'}
{'go', 'c++', 'lua', 'java', 'php'}
True
Ha descubierto que jess, clark and john
tiene las habilidades para project
.
Entiendo que su objetivo es combinar las habilidades de dos candidatos.
Entonces, cuando Clark puede hacer PHP, C + y Go, y Cindy puede hacer PHP, Go y Word.
La combinación debería ser PHP, C +, Go y Word.
Esta función de habilidades debería hacer eso:
def skills(candidates):
skillset = []
for x in (candidates):
for skill in x[0]:
if skill not in skillset:
skillset.append(skill)
return skillset
En lugar de simplemente verificar si un conjunto de habilidades no está ya en la lista, va a cada conjunto de habilidades y las agrega a una nueva lista, si la habilidad individual aún no está allí.
Su código tiene algún punto oscuro.
Por ejemplo, agrega x[0]
a skillset
y luego verifica si x[0]
está en skillset
, que siempre es True
.
Todas las demás respuestas resuelven su problema, aquí una variante de una línea:
def skills(candidates): return list({x for c in candidates for x in c[0]})
Preguntas relacionadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.