Trier les éléments d'un tableau en spécifiant des conditions

#PHP 5.4.9
<?php

$ary = array(
  array('name'=>'aaa','age'=>111,'id'=>1),
  array('name'=>'bbb','age'=>555,'id'=>2),
  array('name'=>'ccc','age'=>222,'id'=>3)
);

function cmp_by_key($k){
  $cmp = function($a,$b)use($k) {
    if($a[$k] == $b[$k]){
      return 0;
    }elseif($a[$k] < $b[$k]){
      return -1;
    }else{
      return 1;
    }
  };
  return $cmp;
}

#order by age
echo 'order by age'.PHP_EOL;
$by_age = cmp_by_key('age');
usort($ary,$by_age);
foreach($ary as $k => $v ){
  echo str_replace(PHP_EOL,'',var_export($v,true)).PHP_EOL;
}

#order by id
echo 'order by id'.PHP_EOL;
$by_id = cmp_by_key('id');
usort($ary,$by_id);
foreach($ary as $k => $v ){
  echo str_replace(PHP_EOL,'',var_export($v,true)).PHP_EOL;
}

/* output 

order by age
array (  'name' => 'aaa',  'age' => 111,  'id' => 1,)
array (  'name' => 'ccc',  'age' => 222,  'id' => 3,)
array (  'name' => 'bbb',  'age' => 555,  'id' => 2,)
order by id
array (  'name' => 'aaa',  'age' => 111,  'id' => 1,)
array (  'name' => 'bbb',  'age' => 555,  'id' => 2,)
array (  'name' => 'ccc',  'age' => 222,  'id' => 3,)

*/

#Python 2.7.1
data =[
  {'name':'aaa','age':111,'id':1},
  {'name':'bbb','age':555,'id':2},
  {'name':'ccc','age':222,'id':3}]

print "order by age"
for row in sorted(data,key=lambda x:x['age']):
  print row

print "order by id"
for row in sorted(data,key=lambda x:x['id']):
  print row
order by age

""" output 
{'age': 111, 'name': 'aaa', 'id': 1}
{'age': 222, 'name': 'ccc', 'id': 3}
{'age': 555, 'name': 'bbb', 'id': 2}
order by id
{'age': 111, 'name': 'aaa', 'id': 1}
{'age': 555, 'name': 'bbb', 'id': 2}
{'age': 222, 'name': 'ccc', 'id': 3}
"""
//scala 2.10.1
var data = List(
  Map("name"->"aaa","age"->"111","id"->"1"),
  Map("name"->"bbb","age"->"555","id"->"2"),
  Map("name"->"ccc","age"->"222","id"->"3"))

//order by age
var by_age = data.sortBy( a=>a("age").toInt )
println("order by age")
by_age.foreach(println)

//order by id
var by_id = data.sortBy( a=>a("id").toInt )
println("order by id")
by_id.foreach(println)

/* output
order by age
Map(name -> aaa, age -> 111, id -> 1)
Map(name -> ccc, age -> 222, id -> 3)
Map(name -> bbb, age -> 555, id -> 2)
order by id
Map(name -> aaa, age -> 111, id -> 1)
Map(name -> bbb, age -> 555, id -> 2)
Map(name -> ccc, age -> 222, id -> 3)
*/

Recommended Posts

Trier les éléments d'un tableau en spécifiant des conditions
Trier en spécifiant les conditions dans CASTable
Le tri du tableau de tuple peut être accéléré en spécifiant une clé (Python)
Comment trier en spécifiant une colonne dans le tableau Python Numpy.
[python] Comment trier par le Nth Mth élément d'un tableau multidimensionnel
Trier la liste des tuples en Python en spécifiant l'ordre croissant / décroissant de plusieurs clés
Comment extraire les conditions (acquérir tous les éléments du Groupe qui remplissent les conditions) pour Groupe par Groupe
Trier le tableau de chaînes par ordre de longueur et syllabaire japonais
Je veux déterminer l'authenticité d'un élément du tableau numpy
[Python] Tri itérable selon plusieurs conditions
[Python] Afficher uniquement les éléments de la liste côte à côte [Vertical, horizontal]
[Python] Comment utiliser l'instruction for. Une méthode d'extraction en spécifiant une plage ou des conditions.
[OpenCV] À propos du tableau retourné par imread
Installer en spécifiant la version avec pip
Lisez le fichier en spécifiant le code de caractère.
Pandas du débutant, par le débutant, pour le débutant [Python]
Suivez en spécifiant les conditions à l'aide de tweepy
Importez en spécifiant directement le chemin du répertoire
[Python] Combine tous les éléments dans un tableau
Liste de contrôle pour éviter de transformer les éléments de array of numpy avec for
Obtenez le dernier élément du tableau en fractionnant les chaînes en Python et PHP
Vérifiez le fonctionnement d'OpenCV3 installé par Anaconda
[python] Vérifier les éléments de la liste tous, tous
[Python] Trier la liste de pathlib.Path dans l'ordre naturel
Spécification de la plage des tableaux ruby et python
[Python] Trier la table par sort_values (pandas DataFrame)
Astuce BeautifulSoup: choisissez la balise en spécifiant le chemin
La forme du tableau unidimensionnel de numpy était compliquée
Minimisez le nombre de polissages en optimisant la combinaison
Juger la finition du mahjong par l'optimisation des combinaisons
[Python numpy] Spécifiez dynamiquement l'index du tableau
Sortie sous la forme d'un tableau python
Rechercher par la valeur de l'instance dans la liste
[Python] Manipulation d'éléments dans une liste (tableau) [Trier]
Trier les fichiers mis à jour dans la période spécifiée par la commande find par ordre de taille
Trier par pandas
Extrayez l'erreur de code d'état de la série 400500 du journal d'accès Apache en spécifiant la plage de temps
Afficher progressivement la sortie de la commande exécutée par le sous-processus.
Optical Flow, l'image dynamique capturée par OpenCV
L'histoire de l'inadéquation de Hash Sum causée par gcrypto20
Obtenez l'image de "Suzu Hirose" par recherche d'images Google.
○○ Résolution de problèmes dans le département de mathématiques avec optimisation
Le datetime Python3 est plus rapide en spécifiant simplement le fuseau horaire
J'ai comparé l'identité des images par moment Hu
[Statistiques] Comprendre le mécanisme des graphiques Q-Q avec animation.
[Python] Manipulation des éléments dans la liste (tableau) [Ajouter / Supprimer]
[Golang] Spécifiez un tableau pour la valeur de la carte
Obtenir la taille (nombre d'éléments) de Union Find en Python
Accédez à Github en spécifiant la clé SSH dans GitPython
[Python] Affiche toutes les combinaisons d'éléments de la liste
Regrouper par éléments consécutifs d'une liste en Python
[Django 2.2] Trier et obtenir la valeur de la destination de la relation
Écoutez de la musique en accédant à l'API non officielle de Google Play Music
Convertir les éléments du tableau numpy de float en int
La méthode de copie de pandas.DataFrame est une copie profonde par défaut
Créez un tableau à deux dimensions en ajoutant une ligne à la fin d'un tableau vide avec numpy