Python Beginner - How to splice a list of objects with the frequency of an object's attribute -


given:

from collections import counter  class test:     age = 'unknown'     city = 'unknown'     def __init__(self, a, c):         self.age =         self.city = c     def __repr__(self):         return "(" + str(self.age) + "," + self.city + ")"  l = [test(20, 'la'), test(30, 'ny'), test(30, 'la')] 

i count frequency of 'city' attribute:

desired output:

[[20, 'la', 2], [30, 'ny', 1], [30, 'la', 2]]

you're on right track if you're thinking using counter - can't splicing want, will frequencies you. since want frequencies based on city, tell counter cities:

freq = counter(l.city l in l) 

then freq['la'] frequency associated 'la'. want list of tuples (age, city, frequency) - objects in l give age , city directly, , have object gives frequency when give city. means can desired result simple list comprehension:

[(l.age, l.city, freq[l.city]) l in l] 

Comments

Popular posts from this blog

android - getbluetoothservice() called with no bluetoothmanagercallback -

sql - ASP.NET SqlDataSource, like on SelectCommand -

ios - Undefined symbols for architecture armv7: "_OBJC_CLASS_$_SSZipArchive" -