我正在从两个列表创建一个字典,结果字典将包含一些具有多个值的键。
这两个列表是jpg_paths
和jpg_ID
。我正在遍历列表以将值与键匹配,但如果键已存在则无法附加值。
当我尝试追加时,我收到错误'str' object has no attribute 'append'
。我如何追加价值?
for j in jpg_ID:
for jp in jpg_paths:
if j in jp:
if j in pdf_dict.keys():
pdf_dict[j].append(jp)
else:
pdf_dict[j] = jp
print pdf_dict
答案 0 :(得分:1)
您将第一个值设置为字符串:
pdf_dict[j] = jp
如果您想要一个列表值(包含字符串),请使用一个:
pdf_dict[j] = [jp]
这是一个包含单个(字符串)元素的列表。
其他一些说明:
在测试会员资格时无需致电.keys()
。直接对字典这样做:
if j in pdf_dict:
如果密钥丢失,您可以使用dict.setdefault()
method将值设置为空列表,这样您只需要使用.append()
并且您不需要测试密钥是否已存在:
pdf_dict.setdefault(j, []).append(jp)
您可以使用列表解析来一次构建列表:
for j in jpg_ID:
pdf_dict[j] = [jp for jp in jpg_paths if j in jp]
这可以用字典理解取代
pdf_dict = {j: [jp for jp in jpg_paths if j in jp] for j in jpg_ID]}