Python: cuente si la posición del diccionario es igual a clave o valor

Dado un diccionario, cuente las instancias en las que la posición del elemento del diccionario sea igual a la clave o el valor. Válido para Py >= 3.6 [Introducción al ordenamiento de diccionarios].

Entrada : test_dict = {5:3, 2:3, 10:4, 7:3, 8:1, 9:5} 
Salida : 2 
Explicación : en la posición 3 y 5, los valores son 3 y 5.

Entrada : test_dict = {5:3, 2:3, 10:4, 8:1, 9:5} 
Salida : 1 
Explicación : en la quinta posición, el valor es 5. 
 

Método #1: Usar bucle

En esto, iteramos para cada elemento del diccionario y probamos cada elemento para verificar si alguna posición es igual a la clave o el valor del diccionario, si lo encontramos, iteramos el contador.

Python3

# Python3 code to demonstrate working of
# Count if dictionary position equals key or value
# Using loop
  
# initializing dictionary
test_dict = {5: 3, 1: 3, 10: 4, 7: 3, 8: 1, 9: 5}
  
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
  
res = 0
test_dict = list(test_dict.items())
for idx in range(0, len(test_dict)):
  
    # checking for key or value equality
    if idx == test_dict[idx][0] or idx == test_dict[idx][1]:
        res += 1
  
# printing result
print("The required frequency : " + str(res))
Producción

The original dictionary is : {5: 3, 1: 3, 10: 4, 7: 3, 8: 1, 9: 5}
The required frequency : 3

Método #2: Usando sum() + comprensión de lista

En esto, asignamos 1 a cada caso en el que el índice del diccionario se encuentra igual a cualquiera de sus elementos, luego realizamos la suma de la lista usando sum().

Python3

# Python3 code to demonstrate working of
# Count if dictionary position equals key or value
# Using sum() + list comprehension
  
# initializing dictionary
test_dict = {5: 3, 1: 3, 10: 4, 7: 3, 8: 1, 9: 5}
  
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
  
test_dict = list(test_dict.items())
  
# sum() computing sum for filtered cases
res = sum([1 for idx in range(0, len(test_dict)) if idx ==
           test_dict[idx][0] or idx == test_dict[idx][1]])
  
# printing result
print("The required frequency : " + str(res))
Producción

The original dictionary is : {5: 3, 1: 3, 10: 4, 7: 3, 8: 1, 9: 5}
The required frequency : 3

Publicación traducida automáticamente

Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *