有没有办法复制字典键并为这些键附加不同的值?

时间:2019-04-11 16:52:21

标签: python-3.x beautifulsoup lxml

我正在寻找一个字典,该字典列出“ Quantity”作为键,并给出一个整数作为值。但是,我还需要做的是获取“ Quantity”以重复自身,并按我用来提供值的列表顺序添加值。

我已经做的是在列表中使用'Quantity'和列表中的值时使用dict(zip)函数,但是当我需要多个时(仅当我的值列表中有许多元素时)才给我一个结果)。我也在尝试for循环,但是也许我的语法是错误的。这是到目前为止我所做的事情:

from bs4 import BeautifulSoup
fd = []

html = '''<input id="qty_cartline_change_-1313013247" class="qty" type="text" name="qty" value="1" maxlength="4" data-component="quantitybox.value" data-productdata-name="quantity">
<input id="qty_cartline_change_112550273" class="qty" type="text" name="qty" value="1" maxlength="4" data-component="quantitybox.value" data-productdata-name="quantity">
<input id="qty_cartline_change_112551625" class="qty" type="text" name="qty" value="6" maxlength="4" data-component="quantitybox.value" data-productdata-name="quantity">
<input id="qty_cartline_change_112559375" class="qty" type="text" name="qty" value="2" maxlength="4" data-component="quantitybox.value" data-productdata-name="quantity">
<input id="qty_cartline_change_112550126" class="qty" type="text" name="qty" value="5" maxlength="4" data-component="quantitybox.value" data-productdata-name="quantity">

quantity = ['Quantity']
soup = BeautifulSoup(html, 'lxml')
values = [item['value'] for item in soup.select("input[value]")]
d = dict(zip(quantity, values))
print(d)

结果如下:

{'Quantity': '1'}

这是朝正确方向迈出的一步,但我需要结果看起来像这样:

{'Quantity': '1'}
{'Quantity' : '1'}
{'Quantity' : '6'}
{'Quantity' : '2'}
{'Quantity' : '5'}

我该怎么办?

1 个答案:

答案 0 :(得分:1)

好吧,您在字典中的每个键最多只能有一个值。但是,为了解决您的问题,您可以使用字典列表或字典,在该列表中,代替键Quantity的是HTML元素的ID。最小的变化是字典列表,看起来像

values = ...  # same as before
dicts = [{'Quantity': v} for v in values]