python – Almacenamiento en listas con elementos repetidos

Estoy haciendo un programa y por mi poco conocimiento he necesitado crear una lista con los elementos repetidos:

días_de_semana = ('lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado', 'domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado', 'domingo')

Tengo entendido que el total de almacenamiento de esa lista es igual al de esta lista:

días_de_semana = ('lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado', 'domingo')

Ya que, por ejemplo, el elemento días_de_semana(0) se guarda en el mismo espacio de días_de_semana(7).
Eso solamente lo leí, pero no estoy seguro, si alguien sabe que lo que estoy diciendo es correcto me lo podría confirmar.

Y también si alguien sabe si en esa lista (la primera, la que tiene los elementos repetidos) se puede liberar espacio o hacer que se vea mejor estaría agradecido, muchas gracias.

Problema al agregar elementos a un diccionario en Python

Reciban un cordial saludo.

En esta oportunidad me dirijo a ustedes con la finalidad de obetener algo de informacion con respecto los diccionarios en Python.

Resulta que estoy tratando de realizar un diccionario con los datos de un archivo.txt el cual tiene varios datos (que deseo colocar como claves de diccionario) repetidos. Estos datos los transformo en una lista pero al momento de crear el diccionario, la sentencia me omite los datos repetidos, es decir, si son 6 elementos de los cuales 3 son repetidos, el resultado final es un diccionario con 3 elementos o items.

Por favor me podrian guiar en este problema particular?? Como hago para crear el diccionario sin omitir ningun dato asi sean repetidos??

Gracias de antemano por su colaboracion.

Saludos!!

python – ¿Cómo puedo mostrar elementos de un diccionario en un ListView en Django?

Intento mostrar los resultados de una consulta en una base de datos MongoDB pero no puedo mostrar los resultados pasados por views.py.

Aquí está la página donde los muestro iterando con un bucle for sobre productos:

{% extends "portfolio/base.html" %}

{% load static %}

{% block content %}

  <tbody>
    {% for element in products %}
      <tr>
        <td>{{ element.q0.Results.0.Brand.Name }}</td>
        <td>{{ element.q0.Results.0.Name }}</td>
      </tr>
    {% endfor %}
  </tbody>
</table>

Y este es views.py donde los solicito y envío.

import pymongo
import todo.config as config
from django.views.generic import TemplateView, ListView
from django.db.models import Q


username = config.username
password = config.password

client = pymongo.MongoClient(
        f"mongodb+srv://{username}:{password}@cluster0.n2hnd.mongodb.net/ifresearch?retryWrites=true&w=majority")
collection = client.test.sephora_backup3

...

class SearchResultsView(ListView):
    model = Perfume
    template_name = 'todo/search_similar_results.html'

    def get_queryset(self):  # new
        query = self.request.GET.get('q')
        print(query)
        products = list(collection.find({"q0.Results.0.Name": {"$regex": query, "$options": "i"}}))
        print("products: ", products)
        return products

Hay resultados en los productos pero no se muestra nada.

Função que multiplica elementos de um array e utilize o método push no Javascript

travei com esse problema, eu até consegui percorrer o array com o for, mas não consegui concluir a lógica e nem entender como usar o push. Alguém ajuda? É JAVASCRIPT. (Sou iniciante)

Problema:

Neste exercício, você deve completar a função multiplicaPorDois(). Essa função:

  • Recebe como parâmetro um array chamado numeros;
  • Deve retornar um array que contenha todos os elementos da variável numeros multiplicados por dois.

Por exemplo: Se o valor de numeros for (1, 2, 3, 4, 5), a função deve retornar o array (2, 4, 6, 8, 10).

Dica: O comando push é utilizado para adicionar um novo elemento em um array. Use-o neste exercício.

Como zerar (apagar todos os elementos) de um array em JavaScript?

Não importando os valores de um array, são métodos válidos para esvaziar um array arr:

Alternativa 1: Redefinir o array original

arr = ();

Esse código vai redefinir a variável arr para um novo array vazio. É ideal se você não tem outras referências para o array original arr, uma vez que isso não modifica o array original, apenas o substitui por um outro novo e vazio.

É importante tomar cuidado com esta alternativa tendo em vista que, se você tiver referências ao array arr em outras partes do seu código, elas ficarão inalteradas. Em suma, utilize esta alternativa somente quando você não está mantendo outras referências ao array original — que não está sendo, de fato, esvaziado, apenas substituído em um (e não todos) determinado local.

Esta é a alternativa mais rápida.

E este código mostra o problema da referência se o devido cuidado não for tomado:

let arr1 = ('a','b','c','d','e','f');
let arr2 = arr1;  // Referência à `arr1` em outra variável. 

// Note que estamos apenas substituindo o valor da variável `arr1`.
// Não estamos, de fato, apagando nenhum dos elementos do array.
arr1 = ();

console.log(arr2); //=> ('a', 'b', 'c', 'd', 'e', 'f')

Vale observar também que, se o array tiver sido declarado com const, não é possível utilizar esta alternativa. No entanto, modificações ao array em si ainda são válidas, conforme explicado aqui e aqui.

Todas as soluções a seguir modificarão o array original (e, portanto, refletirão alterações em todas as referências).

Alternativa 2: Zerar a propriedade length

arr.length = 0;

Isso irá limpar o array existente ao setar sua propriedade length para zero. Basicamente, a propriedade length dos arrays é um setter que, quando alterado, é capaz de modificar o array para se adequar ao novo valor.

Alternativa 3: Array.prototype.splice

arr.splice(0, arr.length);

Utilizar o método Array.prototype.splice funcionará perfeitamente para remover todos os itens de arr. No entanto, como esse método retorna um array com todos os itens removidos, acabará retornando uma cópia do array original (já que todos foram removidos). Apesar disso, benchmarks demonstram que isso não implica em nenhum custo adicional em performance.

Alternativa 4: Utilizar Array.prototype.pop até esvaziar o array

while (arr.length) {
  arr.pop();
}

Essa solução utiliza o Array.prototype.pop para remover o último elemento do array. Utiliza-se o laço while para repetir a remoção dos elementos finais até que o array tenha sido completamente esvaziado.

Essa solução não é muito sucinta e também é a menos performática de todas as apresentadas.

De todos as alternativas apresentadas acima, 1 é a mais rápida, visto que não apaga o array de forma propriamente dita. Apenas modifica a variável que o continha com um novo e vazio array.

No entanto, quando apagar os elementos do array original é realmente necessário, as alternativas 2 e 3 são muito similares em performance e são significativamente superiores em relação à alternativa 4. Para resultados, referir a este benchmark.


Esta é uma adaptação deste excelente esforço coletivo (resposta) do Stack Overflow em Inglês.

python – ¿Cómo implementarías la función “shuffle” en este código para desordenar los elementos de una lista?

Trato de hacer un código para obtener los múltiplos de un número dentro de un rango y una longitud definida.

from random import randint, choice, shuffle
n=4
result=()
y=randint(1,100)
for j in range(1, n+1):
    s=(y*j)
    result.append(s)
    op=choice(result)
print(y)

Al imprimir obtengo el número aleatorio que se eligió.

Posteriormente obtengo la lista que definí como result=(), la imprimo y extraigo un elemento de forma aleatorio de la lista llamando a la variable op=choice(result):

for i in range(n):
    print(f'{result(i)}', end=' ')
print('n'f'-------------SEPARADOR PARA NO REVOLVERME---------------''n')    
print(op, end=' ''n')

print('n'f'-------------SEPARADOR PARA NO REVOLVERME------------''n')    
 

Aquí empieza el problema, debido a que trato añadir la variable a una nueva lista llamada result1=() y agregando tres valores aleatorios, pero al momento de llamar a la función shuffle para hacer los elementos de result1 aleatorios, me arroja el valor en la misma posición.

result1=()
for s in range(4):
    v1,v2,v3=randint(1,100), randint(1,100), randint(1,100)
    result_total=(v1,v2,v3,op)
result1.append(result_total)
shuffle(result1)
sel1,sel2,sel3,sel4 = result_total(0), result_total(1), result_total(2), result_total(3)    
print(sel1, sel2, sel3, sel4)

Lo que trato de hacer es algo así:

¿Cuál de los siguientes números es un múltiplo de n?
a)x  b)y   c)Múltiplo de n   d)z

Por eso la estructura anterior. Lo único que quiero es entender y saber porqué shuffle me arroja el valor en la misma posición. Agradezco su apoyo.

java – Problemas ao adicionar vários elementos no ArrayList

Boa noite carlos… vi muito pouco de java , mas pelo que me parece você esta printando
somente a variável nome e idade .. Não esta acessando diretamente o array.

Concorda comigo que toda vez que você entra dentro do DO , você atribuiu um novo valor, pra nome e idade?
por exemplo
primeira iteração:
Nome = “Pedro”
Idade = 27

Segunda iteração:
Nome = ‘Carlos’
idade = 20

O valor final da variável nome e idade , sera carlos e 20 …

Tente acessar seu array…

eloquent – Acceder a los elementos de una coleccion retornada por una consulta en laravel 7 y spatien permissions

Estoy en laravel 7 y usando el paquete de roles y usuarios de Spatie, llamado permissions.
Necesito hacer un crud que me permita realizar la mantención de la relación de usuarios y su rol respectivo. Este crud debe permitir: (1) Listar los usuarios y su rol asignado (cada usuario puede tener un solo rol). (2) Crear una asociación de un rol a un usuario. (3) Modificar una relación de usuario y rol existente. (4) Eliminar una relación de usuario y un rol.

Para el caso de (1) Listar los usuarios y sus roles, estoy enviando lo siguiente a la vista:

<?php

namespace AppHttpLivewire;
use AppModelsUser;
use IlluminateContractsPaginationPaginator;
use LivewireComponent;
use LivewireWithPagination;

class AdminUsurol extends Component
{
    use WithPagination;
    protected $paginationTheme="bootstrap";
    public $search;

    public function render()
    {       
        $userroles = User::with('roles')->get();
        return view('livewire.admin-usurol', compact('userroles'));
    }

    public function limpia_page(){
        $this->reset('page');
    }
}

En la vista tengo lo siguiente:

@if ($userroles->count())
    <div class="card-body">
        <table class="table table-striped">
            <thead>
                <tr>
                    <th>Usuario</th>
                    <th>Rol</th>
                    <th colspan="2"></th>
                </tr>
            </thead>
            <tbody>
                @forelse ($userroles as $userrole)
                    <tr>
                        <td>{{$userrole->name}}</td>
                        <td>{{$userrole->roles->name}}</td>
                        <td width="10px">
                            <a class="btn btn-info" href="{{route('usurol.edit', $userrole)}}">Modificar</a>
                        </td>
                        <td width="10px">
                            <form action="{{route('usurol.destroy',$userrole)}}" method="POST">
                                @method('delete')
                                @csrf
                                <button class="btn btn-danger" type="submit">Eliminar</button>
                            </form>
                        </td>
                    </tr>
                @empty
                    <tr>
                        <td colspan="5">No hay usuarios asociados a roles registrados</td>
                    </tr>
                @endforelse
            </tbody>
        </table>
    </div>
    <div class="card-footer">
        
    </div>            
@else
    <div class="card-body">
        <p>No hay coincidencias</p>
    </div>
@endif

Pero al ejecutar me arroja:

introducir la descripción de la imagen aquí

Si imprimo lo que se manda a la vista, tengo:

IlluminateDatabaseEloquentCollection {#1481 ▼
  #items: array:3 (▼
    0 => AppModelsUser {#1468 ▶}
    1 => AppModelsUser {#1469 ▶}
    2 => AppModelsUser {#1470 ▶}
  )
}

Abriendo el primer elemento:

    IlluminateDatabaseEloquentCollection {#1481 ▼
  #items: array:3 (▼
    0 => AppModelsUser {#1468 ▼
      #fillable: array:4 (▶)
      #hidden: array:2 (▶)
      #casts: array:1 (▶)
      #connection: "mysql"
      #table: "users"
      #primaryKey: "id"
      #keyType: "int"
      +incrementing: true
      #with: ()
      #withCount: ()
      #perPage: 15
      +exists: true
      +wasRecentlyCreated: false
      #attributes: array:9 (▼
        "id" => 1
        "name" => "User1"
        "email" => "user1@user1.com"
        "email_verified_at" => null
        "password" => "$2y$10$Uuf3Ml7cVgx54N.P06oGeul.ytDkArX2M9n2rEJVOg/yQz1qTHYvG"
        "flg_vigencia" => 1
        "remember_token" => null
        "created_at" => "2021-02-02 15:50:37"
        "updated_at" => "2021-02-02 15:50:37"
      )
      #original: array:9 (▶)
      #changes: ()
      #classCastCache: ()
      #dates: ()
      #dateFormat: null
      #appends: ()
      #dispatchesEvents: ()
      #observables: ()
      #relations: array:1 (▼
        "roles" => IlluminateDatabaseEloquentCollection {#1485 ▼
          #items: array:1 (▼
            0 => SpatiePermissionModelsRole {#1477 ▼
              #guarded: array:1 (▶)
              #connection: "mysql"
              #table: "roles"
              #primaryKey: "id"
              #keyType: "int"
              +incrementing: true
              #with: ()
              #withCount: ()
              #perPage: 15
              +exists: true
              +wasRecentlyCreated: false
              #attributes: array:6 (▼
                "id" => 1
                "name" => "Admin"
                "flg_vigencia" => 1
                "guard_name" => "web"
                "created_at" => "2021-02-02 15:50:37"
                "updated_at" => "2021-02-02 15:50:37"
              )
              #original: array:9 (▶)
              #changes: ()
              #casts: ()
              #classCastCache: ()
              #dates: ()
              #dateFormat: null
              #appends: ()
              #dispatchesEvents: ()
              #observables: ()
              #relations: array:1 (▶)
              #touches: ()
              +timestamps: true
              #hidden: ()
              #visible: ()
              #fillable: ()
              -permissionClass: null
            }
          )
        }
      )
      #touches: ()
      +timestamps: true
      #visible: ()
      #guarded: array:1 (▶)
      #rememberTokenName: "remember_token"
      -roleClass: null
      -permissionClass: null
    }
    1 => AppModelsUser {#1469 ▶}
    2 => AppModelsUser {#1470 ▶}
  )
}

Mi consulta es de qué forma debo acceder a la información del rol en la vista de modo que se pueda desplegar?

Si no pongo la información del rol en la vista, queda:

introducir la descripción de la imagen aquí

javascript – Filtrar elementos de un Queue

function Queue () {
    this.data = ();
}

Queue.prototype.add = function (data) {
    this.data.push(data);
}

Queue.prototype.addxindex = function (data, index) {
if (index < 0 || index > this.size() || !index) {
    throw new TypeError ("El index esta mal mamon")
}
    this.data.splice(index, 0, data);
}

Queue.prototype.removefirst = function () {
    this.data.shift();
}

Queue.prototype.size = function () {
    return this.data.length;
}

Queue.prototype.removelast = function () {
    this.data.pop();
}

Queue.prototype.print = function () {
    return this.data;
}

Queue.prototype.addfirst = function(data) {
    this.data.unshift(data)
}

Queue.prototype.removeIndex = function(index) {
if (index < 0 || index > this.size() || !index){
    throw new TypeError ("El index esta mal mamon");
}
else {
    this.data.splice(index-1, 1);
}
}

Queue.prototype.search = function (data) {
var test = ();
var index = 0;
var aux = ();
var result = this.data.filter(valor => valor.age > 18 && valor.Job === data);
result = result.filter((valor, index) => result.findIndex(Obj => Obj.fullname.Position === valor.fullname.Position) === index)
result = result.map(item => item.fullname.Name);
result = result.map(function (item, position) {
    item = item.split(" ");
    return item 
})
result.forEach(function (element) {
    test(element(0)) ? test(element(0))++ : test(element(0)) = 1
})
return test;
}

var test = new Queue;

test.add({Job: "Junior", age: 33 ,fullname :{Name: "Pedro Lopez", Position: 3}});
test.add({Job: "Junior", age: 33 ,fullname :{Name: "Pedro Daldo", Position: 3}})
test.add({Job: "Senior", age: 44 ,fullname :{Name: "John Kick", Position: 3}})
test.add({Job: "Senior", age: 17 ,fullname :{Name: "Lucas Popus", Position: 2}})
test.addxindex({Job: "SemiSenior", age : 13,fullname: {Name : "Pablo Try", Position: 2}}, 3)
test.addfirst({Job: "Junior", age: 22, fullname :{Name : "Pedro Popo", Position: 4}})
test.addfirst({Job: "Junior", age: 25, fullname :{Name : "Pedro Pipi", Position: 6}})
test.addfirst({Job: "Junior", age: 25, fullname :{Name : "Juja Lag", Position: 8}})
test.removeIndex(6)
console.log(test.search("Junior"))
console.log(test.print())
console.log(test.size())

java – ¿Cómo obtener los elementos menores al promedio?

Tengo el siguiente programa:

public class Suma {
    
    private static int suma = 0;

    public static void main(String() args) {
        
        //var nums = List.of(3, 9, 7, 12, 20, 4, 11, 9, 21, 6, 8, 10);
        int() nums = {3, 9, 7, 12, 20, 4, 11, 9, 21, 6, 8, 10};
        System.out.println(average(nums, 0));
    }
    
    public static float average(int n(), int pos){
        if(pos < n.length) {
            suma = suma + n(pos);
            average(n, pos + 1);
        }
        return (float)suma /(float)n.length;
    }
}

Que me permite obtener los siguientes resultados:

  • Suma de los elementos del Array
  • Número de elementos en el Array
  • Resultado División(Promedio).

Cómo puedo imprimir estos datos pero filtrando los elementos para obtener los elementos que son menores al promedio, sin utilizar ciclos repetitivos.