-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 に答える