关于在Python3中使用多个子值管理值的问题

2024-04-24 23:00:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个关于如何用python执行以下任务的问题。 (我使用python3k)

我有几个变量可以在这些变量的基础上产生更多的变量 每一个都有更多的变量 例如:

通用名称是

item_version_type =

其中每个部分(项目、版本和类型)引用不同的变量(这里每个变量有3个)

item = item_a, item_b, item_c
version = range(1,3)
itemtype = itemtype_a, itemtype_b, itemtype_c

简单地列出每个名称并定义它很烦人:

itema_ver1_typea = 
itemb_ver1_typea = 
itemc_ver1_typea =
itema_ver2_typea = 
etc.
etc.
etc.

尤其是当我有一个变量依赖于另一个变量的时候 例如:

if value == True:
    version = ver + 1

最重要的是,这个例子和我所说的比较起来很简单 与…一起工作。你知道吗

我很好奇的一件事是使用多个“.”类型的类,例如:

item.version.type

我知道这是可以做到的 我就是想不出怎么才能得到一个不止一个点的类

或者有人能给我指出更好的方法

谢谢你的帮助。你知道吗


Tags: 项目版本名称类型versiontypeetcrange
3条回答

很抱歉在这里发布这个而不是评论,但我不知道如何在这里工作的网站。你知道吗

澄清

我需要的基本上是能够得到一个输出说,如在哪里 我可以采取广泛的领域(项目)缩小它进一步(版本),甚至进一步(类型的项目类型,如让我们说类型是勺子,刀,叉)

或者更好的描述是左下臂=左下臂 在那里我也可以像腿左下你知道吗

所以我可以上臂两侧左右上臂 其中一个值将分配给两个。你知道吗

我需要的是能够做真理测试等,并让它返回允许的值 例如

如果leg==真

输出大于;双腿下部, 双腿上部, 左腿上部腿。右。上等等,等等,等等

如果上限==真

输出大于;双腿上部, 左腿上部等等,等等,等等

希望这有帮助

基本上我知道如何得到像item.version这样的东西,但是我怎么得到呢 就像item.version.type

我需要更具体一些项目.版本 我需要能够告诉如果项目是这个和版本是,然后类型将是x

就像 item.version.type项目你知道吗

if version == 3:
    item.version = spoon.3.bent
#which is different from
if version == 2:
    item.version.type = spoon.2.bent

在Python中,这样的数据分组可以通过三种方式完成。你知道吗

第一种方法是元组:

myvariable = ('Sammalamma', 1, 'Text')

第二种方法是词典:

myvariable = {'value': 'Sammalamma', 'version': 1, 'type': 'Text'}

第三种方法是上课:

 class MyClass(object):
     def __init__(self, value, version, type):
          self.value = value
          self.version = version
          self.type = type

 >>> myvariable = MyClass('Sammalamma', 1, 'Text')
 >>> myvariable.value
 'Sammalamma'
 >>> myvariable.version
 1
 >>> myvariable.type
 'Text'

在每种情况下使用哪一个取决于您,尽管在这种情况下,我会声称元组似乎不是最佳选择,但我会选择字典或类。你知道吗

这些都不是python3独有的,它可以在Python的任何版本中工作。你知道吗

除了@Lennart Regebro's answer之外,如果项是不可变的:

import collections

Item = collections.namedtuple('Item', 'value version type')

items = [Item(val, 'ver'+ver, t)
         for val in 'abc' for ver in '12' for t in ['typea']]      
print(items[0])
# -> Item(value='a', version='ver1', type='typea')
item = items[1]
print(item.value, item.type)
# -> b typea

相关问题 更多 >