运行结果与预期不符,期望得到:[{'name': 'AAA}, {'name': 'BBB'}, {'name': 'CCC'}]

# -*- coding: UTF-8 -*-
import re
allinfo=[]
oneinfo={"name":""}

# 使用正则匹配内容
html = '<p style="font-size:12px">AAA</p><p style="font-size:12px">BBB</p><p style="font-size:12px">CCC</p>'
patternName = re.compile('<p style="font-size:12px">(.*?)</p>')
names = patternName.findall(html)
print "names的值为:",names
# names的值为: ['AAA', 'BBB', 'CCC']

i=0
while i<len(names):
    allinfo.append(oneinfo)
# 为每个字典元素,设置具体的value值
    allinfo[i]["name"] = names[i]
    i=i+1
print "allinfo的值为:",allinfo

期望得到:[{'name': 'AAA}, {'name': 'BBB'}, {'name': 'CCC'}]

结果得到的是: [{'name': 'CCC'}, {'name': 'CCC'}, {'name': 'CCC'}]

这是否和list的浅拷贝有关?麻烦解答一下

Scrat
浏览 1177回答 1
1回答

产品经理不是经理

 allinfo[i]["name"]你这个是操作的同一个对象,所以结果不对。跟深浅拷贝没得关系。# 下面代码能达到你想要的效果 names = ['AAA','BBB','CCC'] allinfo = [] i=0 while i<len(names):     oneinfo = {}     oneinfo['name'] = names[i]     allinfo.append(oneinfo)     i = i+1
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python