我有一个格式为{'string-value-keys':[list values]}的字典。对于一个特定的键值,我想以字符串的形式检索该值。下面是一个例子:
>>> simpleDict= {'DDL_TABLE1':['create table bla', ' columns bla bla'], 'DML_TABLE1': ['insert into bla', ' values bla']}
>>> simpleDict
{'DDL_TABLE1': ['create table bla', ' columns bla bla'], 'DML_TABLE1': ['insert into bla', ' values bla']}
>>> sqlQry= " ".join(value for key, value in simpleDict.items() if 'DDL' in key)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: sequence item 0: expected string, list found
>>> sqlQry= " ".join(value for key, value in simpleDict.items() if 'DDL' in key)
当value是字符串值的列表时,我无法理解为什么会出现此错误。
也许你想加入价值的结果:
此时您正试图加入列表列表。。
" ".join()
需要一个iterable字符串,生成器生成字符串列表,因此您将以类似" ".join([['create table bla', ' columns bla bla']])
的调用结束。因为看起来您只希望一个键匹配,所以您可能不希望为此使用生成器。我建议如下:
将连接移到内部:
测试:
根据注释编辑
与生成器相比,使用列表理解更容易看到这一点。
您的信用证原件:
它正在创建字符串列表。如果尝试对其使用join:
产生您看到的错误。
好的,根据完整数据的外观,您可以执行两个连接:
如果你只想要一个大字符串,那么多个连接并不是世界末日。
如果您只查找一个项目,则可以执行以下操作:
如果要处理数据中的多次命中/多次使用,请使用循环:
如果数据是“大海捞针”类型,使用循环并在找到要查找的内容后中断。
相关问题 更多 >
编程相关推荐