2013-01-03 44 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