Résumé de la prise en charge des opérations de hachage (dictionnaire) pour Ruby et Python

Aperçu

Un résumé des opérations typiques de Array en Ruby et Hash (Dictionnaire) en Python.

Ceci est un article pour Rubyist (Pythonista) qui vient de commencer à apprendre Python (Ruby).

Conditions préalables

Informations de référence

Méthode

Initialisation

h = {"a" => 1, "b" => 2, "c" => 3}
h2 = {a: 1, b: 2, c: 3}   #Quand le symbole est la clé
d = {'a': 1, 'b': 2, 'c': 3}

Extraction d'éléments

h['c']    #=> 3
h['d']    #=> nil
d['c']    #=> 3
d['d']    #=>Une exception KeyError se produit

size

h.size   #=> 3
len( d )   #=> 3

each

Boucle autour de l'élément

h.each do |key,val|
  puts key,val
end
for k,v in d.items():
  print(k,v)

keys, values

Obtenez une liste de clés et de valeurs

h.keys    #=> ["a", "b", "c"]
h.values  #=> [1, 2, 3]
keys = d.keys()       #=> dict_keys(['b', 'a', 'c'])
values = d.values()   #=> dict_values([2, 1, 3])

d['d'] = 4
keys                     #=> dict_keys(['b', 'd', 'a', 'c'])
values                   #=> dict_values([2, 4, 1, 3])

list(keys)               #=> ['b', 'd', 'a', 'c']

Généré à partir d'un tableau

a = [1,2,3,4]
a.map {|x| [x,x+3] }.to_h      #=> {1=>4, 2=>5, 3=>6, 4=>7}
a = [1,2,3,4]
{ i:i+3 for i in a }     #=> {1: 4, 2: 5, 3: 6, 4: 7}

clé, carte de valeurs

h = {"a" => 1, "b" => 2, "c" => 3}
h.map {|k,v| [k.upcase, -v] }            #=> [["A", -1], ["B", -2], ["C", -3]]
h.map {|k,v| [k.upcase, -v] }.to_h       #=> {"A"=>-1, "B"=>-2, "C"=>-3}
d = {'a': 1, 'b': 2, 'c': 3}
{ k.upper():-v for k,v in d.items() }    #=> {'A': -1, 'B': -2, 'C': -3}

has_key?

h = {"a" => 1, "b" => 2, "c" => 3}
h.has_key?("a")               #=> true
h.has_key?("d")               #=> false
d = {'a': 1, 'b': 2, 'c': 3}
'a' in d                      #=> True
'd' in d                      #=> False

merge

h1 = {"a" => 1, "b" => 2, "c" => 3}
h2 = {"d" => 4, "e" => 5, "f" => 6}
h1.merge(h2)
# => {"a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5, "f"=>6}
d1 = {"a": 1, "b": 2, "c": 3}
d2 = {"d": 4, "e": 5, "f": 6}
d1.update(d2)
d1
#=> {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6}

delete

h = {"a" => 1, "b" => 2, "c" => 3}
h.delete('a')                      #=> 1
h                                  #=> {"b"=>2, "c"=>3}
d = {"a": 1, "b": 2, "c": 3}
d.pop('a')                         #=> 1
d                                  #=> {'b': 2, 'c': 3}

Définition de la valeur par défaut

Cas d'utilisation d'un tableau associatif lors de la prise d'un histogramme

chars = ["a", "b", "b", "c", "c", "c"]
h = Hash.new(0)
chars.each {|c| h[c] += 1 }            #Compter le nombre de caractères
h                                      #=> {"a"=>1, "b"=>2, "c"=>3}
chars = ["a", "b", "b", "c", "c", "c"]
d = {}
for c in chars:
  d[c] = d.get(c,0) + 1             #Obtient s'il y a une valeur, renvoie 0 sinon
d                                   #=> {'a': 1, 'b': 2, 'c': 3}
from collections import defaultdict
chars = ["a", "b", "b", "c", "c", "c"]
d = defaultdict( lambda: 0 )
for c in chars:
  d[c] += 1

d
# => defaultdict(<function __main__.<lambda>>, {'a': 1, 'b': 2, 'c': 3})

Lors de la création d'un index d'un tableau

words = ["a1", "b1", "b2", "c1", "c2", "c3"]
h = Hash.new {|hash,key| hash[key] = [] }
words.each {|w| h[ w[0] ] << w }
h
# => {"a"=>["a1"], "b"=>["b1", "b2"], "c"=>["c1", "c2", "c3"]}
words = ["a1", "b1", "b2", "c1", "c2", "c3"]
d = defaultdict( list )
for w in words:
  key = w[0]
  d[key].append(w)

d
#=> defaultdict(list, {'a': ['a1'], 'b': ['b1', 'b2'], 'c': ['c1', 'c2', 'c3']})

Recommended Posts

Résumé de la prise en charge des opérations de hachage (dictionnaire) pour Ruby et Python
Résumé de la correspondance entre les opérations de tableau ruby et python
[python] Résumé de la récupération des listes et des éléments du dictionnaire
Résumé des index et des tranches Python
J'ai comparé la vitesse de Hash avec Topaz, Ruby et Python
Résumé de diverses instructions for en Python
Résumé des techniques utiles de Scrapy en Python
Dictionnaire [Python] (hachage)
Grammaire de méthode instantanée pour Python et Ruby (étude)
Résumé des différences entre PHP et Python
Liste des opérations de base de Python3 list, tapple, dictionnaire, set
Installation de Python 3 et Flask [Résumé de la construction de l'environnement]
Résumé des tableaux Python fréquemment utilisés (pour moi-même)
Code pour vérifier le fonctionnement de Python Matplot lib
Résumé relatif aux E / S de python et fortran
À propos des copies superficielles et profondes de Python / Ruby
Comparaison de Python et Ruby (Environment / Grammar / Literal Edition)
Fonctionnement de base de Python Pandas Series et Dataframe (1)
[Python] Opération d'énumération
Ruby, Python et carte
Python et Ruby se séparent
Résumé des opérations d'annuaire Python
Résumé des arguments Python
Liste des bibliothèques Python pour les data scientists et les data ingénieurs
Résumé du tri Python (liste, type de dictionnaire, série, DataFrame)
Vitesse de lecture Python netCDF4 et imbrication d'instructions for
Python - Explication et résumé de l'utilisation des 24 meilleurs packages
[Python] Erreur de type: résumé des causes et des solutions pour "Aucun type"
Récapitulatif des paramètres d'environnement Python pour moi-même [mac] [ubuntu]
Différence entre Ruby et Python en termes de variables
Récapitulatif des outils d'exploitation de l'interface graphique Windows avec Python
Résumé des méthodes de prétraitement pour les débutants en Python (trame de données Pandas)
Prise en charge de l'environnement d'exécution Python 2.7 sur AWS Lambda (à partir de 2020.1)
Confrontation de dictionnaire anglais-anglais pour Python et anglais lié à l'IA
Récapitulatif du traitement de la date en Python (datetime et dateutil)
Comparaison de CoffeeScript avec la grammaire JavaScript, Python et Ruby
Gestion des versions de Node, Ruby et Python avec anyenv
Construisez un serveur API pour vérifier le fonctionnement de l'implémentation frontale avec python3 et Flask
Prise en charge de Fabric pour Python 3
Liste Python, pour instruction, dictionnaire
résumé lié à l'opération de fichier python
Python sur Ruby et Ruby en colère sur Python
Vérifiez le fonctionnement de Python pour .NET dans chaque environnement
Simulez des dommages-intérêts tardifs pour les frais de garde d'enfants en souffrance avec Python
Mémo tranche python et rubis
Entrée standard / résumé / python, ruby
[Python] Résumé de l'utilisation des fonctions de fractionnement et de jointure
Syntaxe Ruby et Python ~ branch ~
Python: créer un dictionnaire à partir d'une liste de clés et de valeurs
Installation source et installation de Python
Résumé des différences entre Ruby on rails et Django ~ Bases ~
Création de l'environnement de travail Docker R et Python 2: prise en charge du japonais
Créer et tester un environnement CI pour plusieurs versions de Python
Un bref résumé de Graphviz en python (expliqué uniquement pour mac)
Résumé des API recommandées pour l'intelligence artificielle, l'apprentissage automatique et l'IA
Résolution avec Ruby, Python et numpy AtCoder ABC054 B Calcul de la matrice
Résumé des différences entre Python et PHP (tableau de comparaison des principaux éléments)
[Pour les débutants] Résumé de la souffrance de l'AED de Kaggle et de sa lutte
Construction d'environnement de python et opencv
Différence entre Ruby et Python Split