#1500 desde lab directamente.
pd: si es gordo IDE xd
En Jupiter la declaración init no tiene sentido, a mi modo de ver. Está bien para autocontener scripts por si los reutilizas en otras partes. Es una "buena práctica".
Yo uso jupyterlab, también, porque va muy fino. Y para Python uso Spyder, la consola interactiva es fundamental para mí.
He intentando/estoy intentando migrar o simultanear a Visual Studio Code por su tremenda versatilidad (mueve muy bien jupyter también), pero me cuesta por la carencia de la IPython console (aunque usa IPython para rular jupyter, si no me confundo).
#1502 Depende también lo que hagas, no se, si estas haciendo cosas de backend en flask o lo que sea no tendría mucho sentido usar lab, pero si por ejemplo para hacer alguna cosilla separada que luego quieres implementar en una api o yo que se xd. A mi como herramienta me parece imprescindible para picotear. Para lo ultimo que lo he usado mas o menos en serio a sido con cv2 y tesseract xd (sacar mierda de un juego xd), y luego hacerme un servicio. Si lo hago solo con visual, en vez de tardar media tarde, a saber..
#1503 tesseract está chulo, aunque el ocr tiene un acierto un poco pobre... por lo menos en un proyecto personal que hice sobre portadas de periódicos XD
Sí, estoy de acuerdo contigo, pero la verdad es que VSCode ofrece bastante finura...
No se puede integrar el spyder terminal en vscode con pypi? A lo mejor consigues lo que quieres. Se que se pueden utilizar distintos terminales en el vscode, wsl, powershell, etc.. #1504
Pero no tengo mucha idea del tema tampoco.
#1507 seguro que se puede, pero pasa como con ATOM, al final es tiempo en ponerlo y si no va fino pues
Y ya que estoy, alguien usando ATOM, ya va fino? me acuerdo de que carraspeaba bastante.
Estoy contento, acabo de hacer #1425 de nuevo para unas mierdas personales y ha ido suave.
Situación: del año 2003 al 2010 tuve un blog personal privado en una web. He pensado oportuno que estaría bien extraer todas las entradas del diario para llevarlas a mi obsidian, como recuerdo y... a saber qué puedo sacar.
Pues bien, una vez en la web, no tienen una manera sencilla de extraer todas las entradas del diario. Solo permiten exportar manualmente mes a mes en csv o en xml. ¿Solución? Capturar el cURL del post de un mes, enchufar los headers en request e ir modificando el payload con todo el span temporal en un for.
Ahora tendré que hacerme un código para exportar una a una las entradas en sus respectivas notas markdown formateando los tags y el contenido. ¡Qué bien!
PD: Ya sé que el try catch es feote, pero que vamos, no quería gastar tiempo es esto. XDD
Edit: Ya he crado un parser para exportar cada una de las entradas del diario a markdown e importarlas en mi "Daily Journal" de obsidian:
He tenido que hacer un groupby(by="date") porque ocurre que ha habido varios días con varias entradas. De este modo, voy haciendo un append, línea 49, de entradas para cada día (por si hay más de una).
Tará:
#1509hda:PD: Ya sé que el try catch es feote, pero que vamos, no quería gastar tiempo es esto. XDD
Para nada es feote xd por cierto puedes usar el finally al terminar el try y meter ahi por ejemplo el print o algun task al finalizar la obra.
a mi el try except me salva muchas veces
por ejemplo si tengo que incrementar una variable aún no definida, algo tipo:
try: a += 1
except: a = 1
si existe la incrementas y si no, la defines. Nice.
#1510 digo que feote por no controlar el tipo de excepción, que lo meto en saco grande xD
#1511 eso es muy guarro jaja Mejor hacer las cosas bien -> https://stackoverflow.com/a/843293/13439937
#1512 la diferencia es que cuando la variable ya exista, directamente hace un ++, con el if, entiendo que cada iteración tiene que computar el if (y sin tener mucha idea asumo que tendrá peor performance)
buscando he encontrado esto https://www.geeksforgeeks.org/try-except-vs-if-in-python/
#1514 qué va. Es una de las mejores herramientas que tiene Obsidian (un programa de gestión de conocimiento, a donde he exportado las entradas formateadas del diario). Cada punto representa una nota, y he filtrado solo las notas de diario.
En carácter general (ver imagen abajo): lo poderoso de esa representación es que las notas sean ideas atómicas. Estas ideas pueden interrelacionarse de modo que se llega a crear conocimiento emergente por entre las conexiones. Cuando estás escribiendo una nota vas marcando como "enlazables" los términos que quieras, creando de este modo "notas virtuales" que puedes poblar en ese u en otro momento o enlaces a notas existentes. Creados los enlaces, puedes ver en la representación los clústeres de notas para extraer nuevas ideas. Es una forma poderosísima para escribir de forma creativa (Zettelkasten), ya sean artículos, libros o documentos científicos. O ya sea simplemente para llevar registro de tu conocimiento general y expandir tu pensamiento.
Algún día podría hacer una entrada en mv sobre Obsidian y zettelkasten. Aunque ya hay mucho por la red.
Una pregunta, tengo una lista llamada DIC con 100 diccionarios, y quiero extraer 1 o varios diccionarios y asignarlos a 1 variable cada uno por ejemplo DIC1 y que la eleccion sea random, hasta ahora tengo esto
dic1 = random.choice(list(data))
luego quiero imprimir 3 keys de cada diccionario, pero no se si esta es la forma adecuada
print(dic1["name"],dic1["description"],dic1["country"])
no hay alguna forma de hacerlo estilo
print(dic1["name", "description", "country"]) <- se que asi no funciona, pero solo he conseguido hacerlo funcionar como esta arriba
#1517 ¿Todos los diccionarios tienen la mismas llaves? Si es así, mi recomendación es que cargues todos los diccionarios en un pandas.dataframe. Las llaves serán las columnas, cada dicionario una fila.
Luego, simplemente eliges que te muestre 3 filas al azar, con todas las comunas o solo las que gustes.
#1518 Es por un ejercicio, no creo que sea para hacerlo asi como comentas, si todos tienen las mismas keys, nombre, descripcion, pais y numero, entonces es parar comparar ambos diccionarios basados en el numero y ver cual es mas alto de los dos. (no se si se entiende la explicacion)
En mi cabeza pense, bueno pues saco 2 diccionarios randoms enseño las keys que quiero y las "numero" que son las que uso para comparar las uso a parte, pero claro la unica forma que he encontrado de sacar todas las keys es como lo he puesto a base de probar pk online solo veo ejemplos con 1 key
#1519 ya veo. ¿Quizás con dos for anidados? Con el primero recorres la lista con los tres diccionarios y con el segundo construyes una string recorriendo las keyvalues de cada dicionario.
Igual estoy entendiendo mal el ejercicio o el problema que representa XD
#1517 lo que planteas está bien, otra alternativa es "random.choices" que te permite elegir varios al azar de una vez, en vez de llamar a "random.choice" 3 veces, que podría resultar en elegir el mismo item ya que no lo eliminas de la lista inicial.
Después iteras sobre los tres items haciendo el Print, lo puedes hacer más limpio con "formatted strings"
print(f"Name: {item[name]}, description: {item[description]} .... ")
Esto asumiendo que todos los diccionarios tienen las mismas claves. Otra opción sería usar "dictionary.get(key)" En caso de que no encuentre la clave devuelve "None" o el valor que pongas tu de default en vez de soltarte una excepción
Pandas me parece "over engineering" para este ejercicio o cualquier cosa que no sean diccionarios masivos
#1522 Si todos tienen las mismas key. Si uso choices en vez de choice luego no puedo imprimirlo como quiero, y la ventaja de como lo tengo es que puedo coger la key "numero" y compararla con la key "numero" de otro diccionario para ver cual tiene mas valor que el otro.
Estos son los diccionarios por ejemplo , pero no quiero que me digais como hacerlo xD solo lo que preguntaba asi sigo rompiendome la cabeza.
Vamos que al final hago Instagram vs CR y gana Instagram pk es mayor que CR en el numero
data = [
{
'name': 'Instagram',
'follower_count': 346,
'description': 'Social media platform',
'country': 'United States'
},
{
'name': 'Cristiano Ronaldo',
'follower_count': 215,
'description': 'Footballer',
'country': 'Portugal'
}]
#1524CaNaRy_r00lz:Si uso choices en vez de choice luego no puedo imprimirlo como quiero
Por que no ibas a poder? la diferencia (entre otras) es que ".choices" te devuelve una lista de longitud k con elementos seleccionados aleatoriamente de lo que le pases. Si tienes una lista con diccionarios y se la pasas a choices elegira tres diccionarios al hacer y te devolvera una lista.
De todas maneras, una cosa en la que si me he confundido es que el metodo ".choices" tambien podria acabar eligiendote el mismo valor varias veces, el metodo ".sample" te evita esa posibilidad.
Por si quieres leer mas del tema link
#1525 Me referia a que me da error al imprimir, pero si tengo el problema que me pilla el mismo item hice esto
Cambie la lista a 3 items y 2 se repiten para ver si funcionaba pero me sigue pillando uno repetido supongo que pk es una lista de 3 items, si fuera una de 20 la probabilidad seria mas baja.
oppA = random.choice(list(data))
oppB = random.choice(list(data))
print(oppA)
print(oppB)
if oppA == oppB:
oppB = random.choice(list(data))
Estoy mirando sample pero no se como hacerlo funcionar. tengo este diccionario
y hago esto:
oppA = random.sample(data,1)
oppB = random.sample(data,1)
asi me pilla 2 diccionarios aleatorios, hasta ahi bien pero cuando quiero imprimir como tenia antes
print(f'Compare A: {oppA["name"]},{oppA["description"]},{oppA["country"]}')
print(f'Compare A: {oppA["name"]},{oppA["description"]},{oppA["country"]}')
TypeError: list indices must be integers or slices, not str
me da este error y ya me pierdo ahora no se que hacer o donde mirar para solucionar esto, pk entiendo que me esta devolviendo una lista y dentro el diccionario, y no entiendo pk no me deja imprimirlo.
Perdon si es un error muy simple
Buenas tardes caballeros, existe alguna web de ejercicios que vayan desde lo mas noob hasta lo mas complejo? Sin ser codewars. Busco algo que vaya por niveles, pero que sea un poco mas complejo que los ejercicios de w3schools? No se si lo que pido es mucho o no. O si no algun libro.
#1526CaNaRy_r00lz:Estoy mirando sample pero no se como hacerlo funcionar. tengo este diccionario
Mirate bien el sample, solo tienes que llamarlo una vez, y pasar dos parametros, el primero la lista de los diccionarios, el segundo el numero de items que quieres que te devuelva.
El error que te esta dando es porque no has leido el metodo bien, "sample" y "choices" a diferencia de "choice" te devuelven una lista, no un elemento.
Te quedaria algo asi
selected_dicts = random.sample(data, 2)
for item in selected_dicts:
print(f"Compare A: {item['name']}, {item['name']}, {item['name']}")
#1527inmor:Por cierto, cual es la diferencia entre usar print normal y usar print con el f y {}
La diferencia no esta en el print, esta que usar 'f""' te permite formatear los strings mas comodamente. https://realpython.com/python-f-strings/
#1528 Tienes este curso https://www.mediavida.com/foro/dev/100-days-of-code-the-complete-python-pro-bootcamp-for-2022-679391
#1529 Creo que no me he expresado bien, pk al intentar hacer lo que comentas ahi me hace esto
Compare A: Cristiano Ronaldo,Footballer,Portugal
Compare B: Cristiano Ronaldo,Footballer,Portugal
Compare A: Instagram,Social media platform,United States
Compare B: Instagram,Social media platform,United States
Tengo puesto lo mismo que tu pero añadi CompareB
selected_dicts = random.sample(data,2)
for item in selected_dicts:
print(f'Compare A: {item["name"]},{item["description"]},{item["country"]}')
print(f'Compare B: {item["name"]},{item["description"]},{item["country"]}')
tengo que poder comprar seguidores entre ambos y saber cual tiene mas que el otro