python - 访问值列表中的特定值

标签 python object dictionary valuestack

我有一本字典,看起来像:

{'153':  |T-shirt| |200| |0| |0|, '764': |Jeans| |350| |0| |0|, '334': |Hatt| |59| |0|   |0|, '324': |Skor| |250| |0| |0|, '234': |Tröja| |300| |0| |0|, '543': |Jacka| |400| |0| |0|}

这意味着我有一个看起来像 153 的 key ,它访问的值是:

|T-shirt| |200| |0| |0|

如果我想做的是访问我的值中的其中 1 个部分。例如,如果我输入 153 并得到 |T 恤 | |200| |0| |0|,那么如何访问我的值中的第200部分呢?如果我的字典值为: |T 恤 | |200| |0| |0|,我只想得到:200,机器人任何其他相同值的部分。我的所有字典值都是类制品的对象,这意味着用“||”括起来的每个部分是一个属性。

例如:

|T-shirt| |200| |0| |0|. 

如果 T 恤是 self.name 属性,200 是 self.price 属性,0(第一个)是 self.quantity,0(第二个)是 self.bought 属性。

我只想访问 self.price 属性,该怎么做?我尝试像这样索引我的对象:

x = wares[T-shirt, 200, 0, 0]
b = x[1]
print(b)

但是 python 说:

"object can not be indexed"

有人有提示吗?

最佳答案

>>> import re
>>> d= {'153':  '|T-shirt| |200| |0| |0|', '764': '|Jeans| |350| |0| |0|', '334': '|Hatt| |59| |0|   |0|', '324': '|Skor| |250| |0| |0|', '234': '|Tröja| |300| |0| |0|', '543': '|Jacka| |400| |0| |0|'}
>>> def parts(s):
        return re.findall(r'\|([^\|]+)\|', s)

或者由于正则表达式是邪恶的,我建议:

>>> def parts(s):
        return [x.strip('|') for x in s.split()]    

>>> parts(d['153'])
['T-shirt', '200', '0', '0']
>>> parts(d['153'])[1]
'200'

或者,您可以通过使 parts 返回字典来使事情变得更容易和更具可读性:

>>> def parts(s):
       return dict(zip(('name', 'price', 'quantity', 'bought'), [x.strip('|') for x in s.split()]))

>>> parts(d['153'])['price']
'200'

实际上,我们可以使用collections.namedtuple做得更好

>>> from collections import namedtuple
>>> def parts(s):
        Item = namedtuple('Item', ('name', 'price', 'quantity', 'bought'))
        return Item(*[x.strip('|') for x in s.split()])


>>> parts(d['153'])
Item(name='T-shirt', price='200', quantity='0', bought='0')
>>> parts(d['153']).price
'200'

关于python - 访问值列表中的特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16100204/

相关文章:

具有唯一键和值的 C# 字典类型

python - 在 pandas DataFrame 中计算 h-index(作者出版物的影响/生产力)的有效方法

python - 在 Python 上使用 Tesseract-OCR 的问题

javascript - 如何在对象数组中查找空对象的索引

javascript - react : Iterating through deeply nested objects and displaying them without tearing my hair out

javascript - Vanilla JS。从 foreach 方法中的数组中删除对象?

python - Ansible 设置失败事实

python - 如何使用 python pandas 和 BeautifulSoup 在电影中阅读 2018 年的维基百科表格

python - selenium.wait_for_condition 等效于 WebDriver 的 Python 绑定(bind)

javascript - 是否可以在 Leaflet 中使用 Mapbox studio 制作的样式?