【问题标题】:python how to create list of interchangeable values?python如何创建可互换值的列表?
【发布时间】:2014-05-04 18:46:21
【问题描述】:

我正在处理 midi 音符、midi 编号和频率。我应该使用python中的哪种列表来引用任何一个属性并获取其他属性?

例如:

  • 输入:"C3",返回frequency,得到261.6255653006

  • 输入:261.6255653006,返回midinumber,得到60

  • 输入:60,返回midinote,得到"C3"

我会使用什么语法、函数、对象或列表类型?

【问题讨论】:

  • “get”是什么意思?除此之外,这听起来像是字典使用的基本示例
  • 也许我对字典不够了解,但我不知道它是如何工作的。
  • 就像我在之前的内容中所说的,一切都取决于您所说的“获取其他属性”。字典存储成对的关键字及其值。您可以将值作为返回和获取含义的元组
  • 获取/检索/返回。我只需要为给定的键指定我想要的值类型。本质上,我需要一个字典,其中每个项目都有 3 个键和 3 个值……或其他东西。

标签: python list key


【解决方案1】:

就像我在 cmets 中所说,元组字典是您可能正在寻找的。示例:

data = {'C3': ('frequency', 261.6255653006), 
    261.6255653006: ('midinumber', 60), 
    60: ('midinote', 'C3'),
}

要验证您的输入,您可以执行以下操作:

input = raw_input()
try:
    key = float(input)
except ValueError:
    key = input

try:
    value = data[key]
except KeyError:
    print "Invalid input. Valid keys are: " + ', '.join(data.keys())
else:
    #input was valid, so value == data[key]

元组的索引就像列表一样。但是,它们是不可变的,这意味着您不能更改它们或将新项目附加到它们。我相信你的情况是这样的。

字典按键索引,例如data['C3'] 返回('frequency', 261.6255653006)data['C3'][0] 返回'frequency'

【讨论】:

  • 很好,这就是我想要做的,但无法理解语法
猜你喜欢
  • 2013-02-15
  • 2012-12-09
  • 1970-01-01
  • 2022-12-17
  • 2020-01-16
  • 1970-01-01
  • 2021-04-19
  • 2022-11-10
  • 2021-04-12
相关资源
最近更新 更多