Python Dict到tuple:为什么不接受所有值?

Python Dict到tuple:为什么不接受所有值?,python,tuples,hashable,Python,Tuples,Hashable,我把字典转换成元组,这样它就可以散列了 DATA_ILLUMINANTS = { 'LED': tuple({ 380.0: 0.006, 385.0: 0.013, ... 780.0: 0.108,}) } 打印元组时,没有第二列数据,它是: (380.0, 385.0, 390.0, 395.0, 400.0, ... , 780.0) 知道为什么吗 我在另一个代码中使用了“LED”元组,该代码返回以下错误:AttributeError:“tup

我把字典转换成元组,这样它就可以散列了

DATA_ILLUMINANTS = {
'LED': tuple({
    380.0: 0.006,
    385.0: 0.013,
    ...
    780.0: 0.108,})
    }
打印元组时,没有第二列数据,它是:

(380.0, 385.0, 390.0, 395.0, 400.0, ... , 780.0)
知道为什么吗

我在另一个代码中使用了“LED”元组,该代码返回以下错误:
AttributeError:“tuple”对象没有属性“shape”
,我想这是因为元组中缺少数据。

在dict上迭代(例如
tuple()
就是这样做的)在键上迭代

您需要
tuple({…}.items())
来获得一个包含两个元组的元组

>>> x = {1: 2, 3: 4, 5: 6}
>>> tuple(x)
(1, 3, 5)
>>> tuple(x.items())
((1, 2), (3, 4), (5, 6))
>>>
tuple()
将遍历给定的对象,这里是一个dict。dict将遍历键,这就是为什么。您可以强制它在项目上迭代:
tuple({380.0:0.006,385.0:0.013,…780.0:0.108,}.items())

发布您用来转换的代码以及您希望得到的内容。当您迭代字典时,您迭代它的键。您希望得到什么输出-
tuple({…}.items())
,可能?tuple对象没有属性'shape'”错误表明代码需要Numpy数组,但这是另一个蠕虫。Dict值不必是可散列的。只有钥匙可以。你可以按原样使用dict;无需将其转换为元组。如果要将dict文本转换为元组(如示例中所示),为什么不首先使用元组文本呢?迭代顺序可能无法预测。对项目进行排序也是明智的。@JohnKugelman,这取决于使用中的CPython版本和OP的用例,但是是的:)@JohnKugelman从CPython 3.6开始就有效地进行排序,而从Python 3.7+正式开始,
dict
对象保持插入顺序。这就是为什么我用“可能是”来回避的原因。为了清晰起见,我建议进行排序。