-3

鉴于:

from collections import Counter

class TEST:
    age = 'unknown'
    city = 'unknown'
    def __init__(self, a, c):
        self.age = a
        self.city = c
    def __repr__(self):
        return "(" + str(self.age) + "," + self.city + ")"

L = [TEST(20, 'LA'), TEST(30, 'NY'), TEST(30, 'LA')]

我想计算“城市”属性的频率:

期望的输出:

[[20, 'LA', 2], [30, 'NY', 1], [30, 'LA', 2]]

4

2 回答 2

2

如果您正在考虑使用,那么您就在正确的轨道上Counter- 它无法进行您想要的拼接,但它为您提供频率。由于您想要仅基于城市的频率,请仅介绍Counter城市:

freq = Counter(l.city for l in L)

然后freq['LA']将是与 相关的频率'LA'。您想要一个元组列表(age, city, frequency)- 中的对象L将直接为您提供年龄和城市,并且您现在有了一个对象,当您给它城市时,它会为您提供频率。这意味着您可以从简单的列表理解中获得所需的结果:

[(l.age, l.city, freq[l.city]) for l in L]
于 2013-04-09T04:52:55.900 回答
1
res=[x.city for x in L]
op=[]
for x in L:
   op+=[[x.age,x.city,res.count(x.city)]]

print op

**[[20, 'LA', 2], [30, 'NY', 1], [30, 'LA', 2]]**
于 2013-04-09T04:46:07.367 回答