很抱歉,我不得不问这个问题是否相当简单,因为此脚本的时间有限..我已经编写了如下代码:
+AwesomeApp
+---AwesomeApp.WebApp
+---AwesomeApp.Services
+---AwesomeApp.WebApp.Tests
+----AwesomeApp.WebApp.Tests.Unit
+----UnitTest #1
+----UnitTest #2
+----AwesomeApp.WebApp.Tests.Integration
+----IntegrationTest #1
+----IntegrationTest #2
+----AwesomeApp.WebApp.Tests.Regression
+----RegressionTest #1
+----RegressionTest #1
localNames = re.findall(r"<\*\[local-name\(\)='.*?'.*?\/@\*\[name\(\)='.*?'.*?'\]", str(nontransTagsContent[0]))
for i in localNames:
tags = re.findall(r"local-name\(\)='(.*?)'", i)
attributes = re.findall(r"name\(\)='(.*?)'", i)
的结果如下:
print(tags)
['tag1']
['tag2', 'tag3', 'tag4']
['tag5', 'tag6']
的结果如下:
print(attributes)
我想得到的结果是字典:
['attribute1', 'attribute2', 'attribute3', 'attribute4']
['attribute5', 'attribute6']
['attribute7', 'attribute8', 'attribute9']
我以这种方式思考,我可以轻松地操作数据,因为我可以提取数据并将其写入其他形式。以下是我尝试的代码:
{'tag1':['attribute1', 'attribute2', 'attribute3','attribute4'}
{'tag2':['attribute5', 'attribute6']}
{'tag3':['attribute5', 'attribute6']}
{'tag4':['attribute5', 'attribute6']}
{'tag5':['attribute7', 'attribute8', 'attribute9']}
{'tag6':['attribute7', 'attribute8', 'attribute9']}
但输出似乎并不正确。你能帮忙看看它,看看如何解决这个问题......非常感谢你!
答案 0 :(得分:2)
tags=[
['tag1'],
['tag2', 'tag3', 'tag4'],
['tag5', 'tag6'],
]
attributes=[
['attribute1', 'attribute2', 'attribute3', 'attribute4'],
['attribute5', 'attribute6'],
['attribute7', 'attribute8', 'attribute9'],
]
for idx, tag_line in enumerate(tags):
for tag in tag_line:
print {tag : attributes[idx]}
输出:
{'tag1': ['attribute1', 'attribute2', 'attribute3', 'attribute4']}
{'tag2': ['attribute5', 'attribute6']}
{'tag3': ['attribute5', 'attribute6']}
{'tag4': ['attribute5', 'attribute6']}
{'tag5': ['attribute7', 'attribute8', 'attribute9']}
{'tag6': ['attribute7', 'attribute8', 'attribute9']}
如果你想让dict在一个列表中包含所有标签
from itertools import repeat
for tag, attr in zip(tags,attributes):
print dict(zip(tag, repeat(attr,len(tag))))
输出:
{'tag1': ['attribute1', 'attribute2', 'attribute3', 'attribute4']}
{'tag4': ['attribute5', 'attribute6'], 'tag2': ['attribute5', 'attribute6'], 'tag3': ['attribute5', 'attribute6']}
{'tag5': ['attribute7', 'attribute8', 'attribute9'], 'tag6': ['attribute7', 'attribute8', 'attribute9']}
附加请求:
tags, attributes = [], []
for i in localNames:
tags.append(re.findall(r"local-name\(\)='(.*?)'", i))
attributes.append(re.findall(r"name\(\)='(.*?)'", i))
答案 1 :(得分:1)
如果您明确创建词典,则可以更轻松,更清晰地执行此操作。 zip
没有创建字典。
tags = [
['tag1'],
['tag2', 'tag3', 'tag4'],
['tag5', 'tag6']
]
attributes = [
['attribute1', 'attribute2', 'attribute3', 'attribute4'],
['attribute5', 'attribute6'],
['attribute7', 'attribute8', 'attribute9']
]
dict_list = []
for t_list, a_list in zip(tags, attributes):
for t in t_list:
dict_list.append({t: a_list})
print(dict_list[-1])
答案 2 :(得分:1)
一个班轮:
guten_tag = { tag: attributes[i] for i, tag_group in enumerate(tags) for tag in tag_group}
确保您有一个名为tags
的列表和一个名为attributes
的列表,就像其他示例中一样。
tags = [
['tag1'],
['tag2', 'tag3', 'tag4'],
['tag5', 'tag6']
]
attributes = [
['attribute1', 'attribute2', 'attribute3', 'attribute4'],
['attribute5', 'attribute6'],
['attribute7', 'attribute8', 'attribute9']
]
速度比较:
galaxy_an
使用1.05 µs per loop
模块在1000000 loops
timeit
处回答jeremy
1.21 µs
使用1000000 loops
模块在timeit
guten_tag
处回答850 ns per loop
1000000 loops
(此方法)timeit
µs
使用10 ^ -6
模块
其中nano
为10 ^ -9
,cv::Mat mat(image.height(),image.width()+750,
CV_8UC3,image.bits(), image.bytesPerLine());
为QImage your_image;
your_image.load(":/Sombrero.png");
your_image = your_image.convertToFormat(
QImage::Format_RGBA8888, Qt::ThresholdDither|Qt::AutoColor);
cv::Mat mat_im(your_image.height(),your_image.width(),CV_8UC3,your_image.bits(),
your_image.bytesPerLine());
。
在一个非常肤浅的层面上,这会给你2-3个数量级的性能提升。
答案 3 :(得分:0)
您可以通过应用嵌套的maps
:
map(
lambda x: map(
lambda y: {y: attributes[x[0]]},
x[1]
),
enumerate(tags)
)