You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
962 B
41 lines
962 B
7 months ago
|
# Copyright 2015 The Chromium OS Authors. All rights reserved.
|
||
|
# Use of this source code is governed by a BSD-style license that can be
|
||
|
# found in the LICENSE file.
|
||
|
|
||
|
|
||
|
import collections
|
||
|
|
||
|
|
||
|
def checksum_counts(checksums):
|
||
|
"""
|
||
|
@param checksums: list of checksums, each checksum in a 4-tuple of ints
|
||
|
@returns a dictionary of checksums as keys mapped to their respective
|
||
|
count of occurance in the list.
|
||
|
|
||
|
"""
|
||
|
counts = {}
|
||
|
|
||
|
for checksum in checksums:
|
||
|
if checksum in counts:
|
||
|
counts[checksum] += 1
|
||
|
else:
|
||
|
counts[checksum] = 1
|
||
|
|
||
|
return counts
|
||
|
|
||
|
|
||
|
def checksum_indices(checksums):
|
||
|
"""
|
||
|
@param checksums: list of checksums.
|
||
|
@returns an OrderedDict containing checksums as keys and their respective
|
||
|
first-occurance indices as values
|
||
|
|
||
|
"""
|
||
|
|
||
|
d = collections.OrderedDict()
|
||
|
|
||
|
for i, checksum in enumerate(checksums):
|
||
|
if checksum not in d:
|
||
|
d[checksum] = i
|
||
|
|
||
|
return d
|