在pydblite中将列表作为参数传递

时间:2017-03-28 22:56:16

标签: python list in-memory-database nosql

我一直在试图弄清楚如何将值列表作为pydblite.insert(* args)的单个参数传递。列表'temp'和'keys'中的每个值必须分别是.insert()和.create()函数的单独参数。

def copyToMemory(self, table, items):
    db = Base(table + ".pdl")

    if not (db.exists()):
        keys = ""
        for key, val in items[0].items(): keys += key + ', '
        #db.create(keys)

    db.open()
    for i in items:
        temp = []
        for val in i.itervalues():
            temp += val
        #db.insert(temp)

1 个答案:

答案 0 :(得分:1)

对于db.create(),构造一个键列表并将它们作为解压缩的参数传递,如下所示:

db.create(*items[0].keys())

由于items是字典列表,因此您只需使用dict.keys()即可使用列表中的第一项获取密钥列表。然后解压缩该密钥列表以将位置参数传递给create()函数。有关参考,请参阅* in function calls

因为dict.keys()是无序的,所以上面假设您并不特别关心表中字段的顺序。

对于db.insert(),您可以使用**传递解压缩的词典:

for item in items:
    db.insert(**item)

** in function calls。这会将参数作为关键字参数传递给函数。请注意,顺序无关紧要 - 表中的字段将与字典中的相应项正确关联。

相关问题