Skip to main content
 首页 » 编程设计

python之从字典中的 key, value> 加入值(列表)

2025年05月04日14jirigala

我有一本格式为 {'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) 

当值是字符串值列表时,我无法理解为什么会出现此错误。

请您参考如下方法:

将连接移到里面:

(' '.join(value) for key, value in simpleDict.items() if 'DDL' in key) 

测试:

>>> simpleDict= {'DDL_TABLE1':['create table bla', ' columns bla bla'], 'DML_TABLE1': ['insert into bla', ' values bla']} 
>>> list(' '.join(value) for key, value in simpleDict.items() if 'DDL' in key) 
['create table bla  columns bla bla'] 

根据评论编辑

与生成器相比,列表推导式更易于查看。

作为 LC 的原件:

>>> [value for key, value in simpleDict.items() if 'DDL' in key] 
[['create table bla', ' columns bla bla']] 

这是创建字符串列表的列表。如果您尝试在其上使用 join:

>>> ' '.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 

产生您看到的错误。

好的,根据你的完整数据的样子,你可以做两个连接:

>>> ' '.join([' '.join(value) for key, value in simpleDict.items() if 'DDL' in key]) 

如果您只想要一个大字符串,多重连接并不是世界末日。

如果您只查找一件商品,您可以这样做:

>>> [' '.join(value) for key, value in simpleDict.items() if 'DDL' in key][0] 
'create table bla  columns bla bla' 

如果您正在处理数据/多次使用中的多次命中,请使用循环:

for s in [' '.join(value) for key, value in simpleDict.items() if 'DDL' in key]: 
   # s multiple times 

如果数据是“大海捞针”类型,请使用循环并在找到所需内容后跳出。