"함수 group by()"의 두 판 사이의 차이

(새 문서: ==개요== {{DISPLAYTITLE:함수 group_by()}} ;함수 group_by() ==PHP== 분류: PHP {{참고|PHP 함수 group_by()}} <syntaxhighlight lang='php' run> function group_by($column_n...)
 
 
(같은 사용자의 중간 판 하나는 보이지 않습니다)
1번째 줄: 1번째 줄:
[[분류: 그룹 데이터]]
==개요==
==개요==
{{DISPLAYTITLE:함수 group_by()}}
{{DISPLAYTITLE:함수 group_by()}}
50번째 줄: 51번째 줄:
[[분류: Python]]
[[분류: Python]]
{{참고|Python group by}}
{{참고|Python group by}}
<syntaxhighlight lang='python' run>
from pprint import pprint
rows = [
{'id':1, 'level':'WARN', 'message':'name missing'},
{'id':2, 'level':'INFO', 'message':'hello'},
{'id':3, 'level':'WARN', 'message':'duplicated id'},
{'id':4, 'level':'INFO', 'message':'world'}
]
result = {}
for row in rows:
    result.setdefault(row['level'], []).append(row)
pprint( result )
</syntaxhighlight>

2021년 11월 27일 (토) 02:31 기준 최신판

1 개요[ | ]

함수 group_by()

2 PHP[ | ]

function group_by($column_name, $rows) {
	$result = [];
	$groups = distinct($rows, $column_name);
	foreach($groups as $group) {
		$result[$group] = where($rows, [$column_name=>$group]);
	}
	return $result;
}
function distinct($rows, $column_name) {
        $column_values = [];
        foreach($rows as $row) {
                $column_values[$row[$column_name]] = 1;
        }
        return array_keys($column_values);
}
function where($rows, $params) {
	$result = [];
	foreach($rows as $row) {
		$row_matched = true;
		foreach($params as $column_name => $column_value) {
			if( !array_key_exists($column_name, $row) 
			|| $row[$column_name] != $column_value ) {
				$row_matched = false;
				break;
			}
		}
		if( $row_matched ) $result[] = $row;
	}
	return $result;
}

$rows = [
	['id'=>1, 'level'=>'WARN', 'message'=>'name missing'],
	['id'=>2, 'level'=>'INFO', 'message'=>'hello'],
	['id'=>3, 'level'=>'WARN', 'message'=>'duplicated id'],
	['id'=>4, 'level'=>'INFO', 'message'=>'world'],
];
print_r( group_by('level', $rows) );

3 Python[ | ]

from pprint import pprint

rows = [
	{'id':1, 'level':'WARN', 'message':'name missing'},
	{'id':2, 'level':'INFO', 'message':'hello'},
	{'id':3, 'level':'WARN', 'message':'duplicated id'},
	{'id':4, 'level':'INFO', 'message':'world'}
]

result = {}
for row in rows:
    result.setdefault(row['level'], []).append(row)
pprint( result )
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}