2013-01-03 47 views
0
的字典
#Queries 
espanol_3d_gtmax = Funcion.objects.filter(fecha_inicio__lte=today, fecha_fin__gte=today, idpelicula__slug=slugpelicula, idciudad=city, visible=1, idioma="Espanol", tipo_3d=1, gtmax=1, xd=None, vip=None) 
espanol_3d = Funcion.objects.filter(fecha_inicio__lte=today, fecha_fin__gte=today, idpelicula__slug=slugpelicula, idciudad=city, visible=1, idioma="Espanol", tipo_3d=1, gtmax=None, xd=None, vip=None) 
espanol_3d_vip = Funcion.objects.filter(fecha_inicio__lte=today, fecha_fin__gte=today, idpelicula__slug=slugpelicula, idciudad=city, visible=1, idioma="Espanol", tipo_3d=1, vip=1, gtmax=None, xd=None) 
espanol_3d_xd = Funcion.objects.filter(fecha_inicio__lte=today, fecha_fin__gte=today, idpelicula__slug=slugpelicula, idciudad=city, visible=1, idioma="Espanol", tipo_3d=1, xd=1, gtmax=None, vip=None) 
espanol_gtmax = Funcion.objects.filter(fecha_inicio__lte=today, fecha_fin__gte=today, idpelicula__slug=slugpelicula, idciudad=city, visible=1, idioma="Espanol", gtmax=1, tipo_3d=None, vip=None, xd=None) 
espanol = Funcion.objects.filter(fecha_inicio__lte=today, fecha_fin__gte=today, idpelicula__slug=slugpelicula, idciudad=city, visible=1, idioma="Espanol", gtmax=None, tipo_3d=None, vip=None, xd=None) 
espanol_vip = Funcion.objects.filter(fecha_inicio__lte=today, fecha_fin__gte=today, idpelicula__slug=slugpelicula, idciudad=city, visible=1, idioma="Espanol", vip=1, gtmax=None, tipo_3d=None, xd=None) 
espanol_xd = Funcion.objects.filter(fecha_inicio__lte=today, fecha_fin__gte=today, idpelicula__slug=slugpelicula, idciudad=city, visible=1, idioma="Espanol", xd=1, vip=None, gtmax=None, tipo_3d=None) 
subtitulada_3d_gtmax = Funcion.objects.filter(fecha_inicio__lte=today, fecha_fin__gte=today, idpelicula__slug=slugpelicula, idciudad=city, visible=1, idioma="Subtitulada", tipo_3d=1, gtmax=1, xd=None, vip=None) 
subtitulada_3d = Funcion.objects.filter(fecha_inicio__lte=today, fecha_fin__gte=today, idpelicula__slug=slugpelicula, idciudad=city, visible=1, idioma="Subtitulada", tipo_3d=1, gtmax=None, xd=None, vip=None) 
subtitulada_3d_vip = Funcion.objects.filter(fecha_inicio__lte=today, fecha_fin__gte=today, idpelicula__slug=slugpelicula, idciudad=city, visible=1, idioma="Subtitulada", tipo_3d=1, vip=1, gtmax=None, xd=None) 
subtitulada_3d_xd = Funcion.objects.filter(fecha_inicio__lte=today, fecha_fin__gte=today, idpelicula__slug=slugpelicula, idciudad=city, visible=1, idioma="Subtitulada", tipo_3d=1, xd=1, vip=None, gtmax=None) 
subtitulada_gtmax = Funcion.objects.filter(fecha_inicio__lte=today, fecha_fin__gte=today, idpelicula__slug=slugpelicula, idciudad=city, visible=1, idioma="Subtitulada", gtmax=1, tipo_3d=None, xd=None, vip=None) 
subtitulada = Funcion.objects.filter(fecha_inicio__lte=today, fecha_fin__gte=today, idpelicula__slug=slugpelicula, idciudad=city, visible=1, idioma="Subtitulada", gtmax=None, tipo_3d=None, vip=None, xd=None) 
subtitulada_vip = Funcion.objects.filter(fecha_inicio__lte=today, fecha_fin__gte=today, idpelicula__slug=slugpelicula, idciudad=city, visible=1, idioma="Subtitulada", vip=1, gtmax=None, tipo_3d=None, xd=None) 
subtitulada_xd = Funcion.objects.filter(fecha_inicio__lte=today, fecha_fin__gte=today, idpelicula__slug=slugpelicula, idciudad=city, visible=1, idioma="Subtitulada", xd=1, vip=None, gtmax=None, tipo_3d=None) 

#Creating a dictionary of all types of funciones querysets 
func_tags = ['espanol', 'subtitulada', 'espanol_3d', 'subtitulada_3d', 'espanol_3d_gtmax', 'espanol_vip', 'espanol_xd', 'subtitulada_3d_gtmax', 'subtitulada_3d_vip', 
'espanol_3d_vip', 'espanol_3d_xd', 'espanol_gtmax', 'subtitulada_3d_xd', 'subtitulada_gtmax', 'subtitulada_vip', 'subtitulada_xd'] 
func_all = [espanol, subtitulada, espanol_3d, subtitulada_3d, espanol_3d_gtmax, espanol_vip, espanol_xd, subtitulada_3d_gtmax, subtitulada_3d_vip, espanol_3d_vip, espanol_3d_xd, 
espanol_gtmax, subtitulada_3d_xd, subtitulada_gtmax, subtitulada_vip, subtitulada_xd] 

funciones = dict(zip(func_tags, func_all)) 

#Removing empty element from funciones dictionary 
for x in list(funciones.keys()): 
    if not (funciones[x]).exists(): 
     del funciones[x] 

cine_tags = [] 

for key, value in funciones.iteritems(): 
    for item in value: 
     cine_tags.append(item.idcine.nombre) 

cine_tags_unique = list(set(cine_tags)) 
horarios = {} 

for cine in cine_tags_unique: 
    horarios[cine] = [] 

#Appending func_tags and funciones to the horarios dictionary organized by cine 
for key, value in funciones.iteritems(): 
    for item in value: 
     for in_key, value in horarios.iteritems(): 
      if in_key == item.idcine.nombre: 
       horarios[in_key].append((key, item)) 

aditional的信息:開關數據結構以字典

Funcion:代表從電影在電影放映時間theather一個Django查詢集。

類型的funciones選項:

['espanol', 'subtitulada', 'espanol_3d', 'subtitulada_3d', 'espanol_3d_gtmax', 'espanol_vip', 'espanol_xd', 'subtitulada_3d_gtmax', 'subtitulada_3d_vip','espanol_3d_vip', 'espanol_3d_xd', 'espanol_gtmax', 'subtitulada_3d_xd', 'subtitulada_gtmax', 'subtitulada_vip', 'subtitulada_xd'] 

電影院選項:

[u'Cinemark Plaza de las Americas', u'Cineplex', u'Multicines CCI', u'Supercines Quicentro Sur', u'Supercines San Luis', u'Multicines Recreo', u'Multicines Scala', u'Mis Cines', u'Multicines Condado'] 

現在我有一個元組的字典結構是這樣的:

'Movie theather': [(type_of_funcion, funcion_object), (type_of_funcion, funcion_object)], 'Another Movie Theater': [(type_of_funcion, funcion_object)],... 

與樣本數據字典,我現在看起來像這樣:

{u'Cinemark Plaza de las Americas': [('subtitulada_3d', <Funcion: Cinemark Plaza de las Americas, Funcion #540: The Hobbit: An Unexpected Journey>), ('subtitulada_3d', <Funcion: Cinemark Plaza de las Americas, Funcion #541: The Hobbit: An Unexpected Journey>), ('subtitulada_3d', <Funcion: Cinemark Plaza de las Americas, Funcion #542: The Hobbit: An Unexpected Journey>), ('espanol_3d', <Funcion: Cinemark Plaza de las Americas, Funcion #548: The Hobbit: An Unexpected Journey>), ('espanol_3d', <Funcion: Cinemark Plaza de las Americas, Funcion #549: The Hobbit: An Unexpected Journey>), ('espanol_3d', <Funcion: Cinemark Plaza de las Americas, Funcion #550: The Hobbit: An Unexpected Journey>), ('espanol', <Funcion: Cinemark Plaza de las Americas, Funcion #530: The Hobbit: An Unexpected Journey>), ('espanol', <Funcion: Cinemark Plaza de las Americas, Funcion #531: The Hobbit: An Unexpected Journey>), ('espanol', <Funcion: Cinemark Plaza de las Americas, Funcion #532: The Hobbit: An Unexpected Journey>), ('espanol', <Funcion: Cinemark Plaza de las Americas, Funcion #533: The Hobbit: An Unexpected Journey>), ('subtitulada', <Funcion: Cinemark Plaza de las Americas, Funcion #508: The Hobbit: An Unexpected Journey>), ('subtitulada', <Funcion: Cinemark Plaza de las Americas, Funcion #509: The Hobbit: An Unexpected Journey>), ('subtitulada', <Funcion: Cinemark Plaza de las Americas, Funcion #510: The Hobbit: An Unexpected Journey>), ('subtitulada', <Funcion: Cinemark Plaza de las Americas, Funcion #511: The Hobbit: An Unexpected Journey>)], u'Cineplex': [('subtitulada_3d', <Funcion: Cineplex, Funcion #454: The Hobbit: An Unexpected Journey>), ('subtitulada_3d', <Funcion: Cineplex, Funcion #455: The Hobbit: An Unexpected Journey>), ('subtitulada_3d', <Funcion: Cineplex, Funcion #456: The Hobbit: An Unexpected Journey>), ('espanol_3d', <Funcion: Cineplex, Funcion #451: The Hobbit: An Unexpected Journey>), ('espanol_3d', <Funcion: Cineplex, Funcion #452: The Hobbit: An Unexpected Journey>), ('espanol_3d', <Funcion: Cineplex, Funcion #453: The Hobbit: An Unexpected Journey>)], u'Multicines CCI': [('espanol_3d', <Funcion: Multicines CCI, Funcion #158: The Hobbit: An Unexpected Journey>), ('espanol_3d', <Funcion: Multicines CCI, Funcion #160: The Hobbit: An Unexpected Journey>), ('espanol_3d', <Funcion: Multicines CCI, Funcion #165: The Hobbit: An Unexpected Journey>), ('espanol_3d', <Funcion: Multicines CCI, Funcion #166: The Hobbit: An Unexpected Journey>), ('espanol_3d', <Funcion: Multicines CCI, Funcion #168: The Hobbit: An Unexpected Journey>), ('espanol', <Funcion: Multicines CCI, Funcion #431: The Hobbit: An Unexpected Journey>), ('espanol', <Funcion: Multicines CCI, Funcion #434: The Hobbit: An Unexpected Journey>), ('espanol', <Funcion: Multicines CCI, Funcion #436: The Hobbit: An Unexpected Journey>), ('espanol', <Funcion: Multicines CCI, Funcion #438: The Hobbit: An Unexpected Journey>), ('espanol', <Funcion: Multicines CCI, Funcion #439: The Hobbit: An Unexpected Journey>)]} 

的問題,這是我「重複」類型funciones的是這樣的:

{u'Cinemark Plaza de las Americas': [('subtitulada_3d', <Funcion: Cinemark Plaza de las Americas, Funcion #540: The Hobbit: An Unexpected Journey>), ('subtitulada_3d', <Funcion: Cinemark Plaza de las Americas, Funcion #541: The Hobbit: An Unexpected Journey>), ('subtitulada_3d', <Funcion: Cinemark Plaza de las Americas, Funcion #542: The Hobbit: An Unexpected Journey>), ('espanol_3d', <Funcion: Cinemark Plaza de las Americas, Funcion #548: The Hobbit: An Unexpected Journey>), 

取而代之的是,我想組由屬於電影院類型funciones的,東西像這樣:

{u'Cinemark Plaza de las Americas': { {'subtitulada': Funcion1, Funcion2, Funcion3}, {'subtitulada_3d': Funcion4, Fucion5} }, next_movie_theather: {},...} 

有關如何完成此任何想法? 感謝

+2

你更得到一個很好的答案,如果你讓你的例子可重複性。例如,您可以使用玩具數據集。 – Maus

+1

另外請注意,這個問題實際上並不需要提及Django或顯示視圖(如果您在我的答案中提供了一個類似於玩具的數據集)。 –

回答

1

您可以在一行中使用一個簡單的字典解析做出這樣的轉變:

d = {"a": [(1, "x"), (2, "y")], "b": [(10, "w"), (1, "z")]} 

new_d = {k: dict(v) for k, v in d.items()} 

print new_d 
# {'a': {1: 'x', 2: 'y'}, 'b': {1: 'z', 10: 'w'}} 
+0

感謝David的回答,它以某種方式截斷結果,我將編輯我的問題並提供玩具數據來更好地說明我的問題。 – edu222

+1

只是猜測 - 是否有重複的鍵(也就是說,多個元組的第一部分的項目?) –

+0

是的大衛,有。我編輯了這個問題,它是否提供了我擁有的更好的想法? THanks – edu222