0

私はpython/Djangoに次のコードを持っています

movie_obj = Movies.objects.all() //assume there are 2 movies
for movie in movie_obj
    movie.genre                 //genre = models.CharField(max_length = 100, blank=True)

のように印刷されます

Drama, Sci-Fi, Thriller      //genre of movie_1

Biography, Drama, Music      // genre of movie_2

のような映画のジャンルのセットを作成したい

genre_set = Set([Drama, Sci-fi, thriller, Music, Biography])

問題: movie.genre はunicode オブジェクトです。movie_obj は単一の Unicode オブジェクトと見なされるためです。

どのようにmovie_objから個々のジャンルを取得して、Listとtherby Setを作成できますか。

4

3 に答える 3

1

私はあなたの問題を理解していません。しかし、これはうまくいくはずです:

genre_groups = Movies.objects.values_list('genre', flat = True) #output: ['Drama, Sci-Fi, Thriller', 'Biography, Drama, Music']
genres = [ agroup.split(",") for agroup in genre_groups ] #output: ['Drama', 'Sci-Fi', 'Thriller', 'Biography', 'Drama', 'Music']
genres_set = set(genres) #output = set('Drama', 'Sci-Fi', 'Thriller', 'Biography', 'Music')

編集:私の悪い、2番目のステップは配列の配列を返します。エレガントな方法で解決する方法を見ていきます

別の手順 2 および 3:

genres_set = {}
for agroup in genre_groups:
    genres_set |= set(agroup.split(","))
于 2013-08-08T13:50:08.443 に答える
1
>>> a = unicode('bla, blee, bla, blue')
>>> a
u'bla, blee, bla, blue'
>>> a.split(', ')
[u'bla', u'blee', u'bla', u'blue']
>>> set(a.split(', '))
set([u'blee', u'blue', u'bla'])

ジャンルごとにコマ割りして、やりたいことリストを作って、それをセットに変換できます。

于 2013-08-08T13:46:43.303 に答える