[pyar] Cómo evito eval() en ésta situación?
Gabriel Acosta
acostadariogabriel en gmail.com
Mie Ago 17 09:43:50 ART 2016
Buenas lista!
Quiero deshacerme del uso de eval(), ésta porción de código implementa
la operación `select` del álgebra relacional:
class Relation(object):
def __init__(self):
self.tuples = set()
self.header = []
def add(self, data):
self.tuples.add(data)
def select(self, predicate):
new_rela = Relation()
new_rela.header = self.header
_filter = {}
for data in self.tuples:
for e, i in enumerate(self.header):
_filter[i] = data[e]
if eval(predicate, {}, _filter):
new_rela.add(data)
print(new_rela.tuples)
r = Relation()
r.header = ['id', 'name', 'age']
r.add((1, 'Gabriel', 25))
r.add((4, 'Alice', 43))
r.add((54, 'Bob', 33))
r.select("age > 35")
Alguna alternativa más 'limpia'?
Un abrazo?
--
Gabriel Acosta
NINJA-IDE Core Developer
https://centaurialpha.github.io
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20160817/c75854fc/attachment.html>
Más información sobre la lista de distribución pyar