gpt4 book ai didi

python - 如何从索引 s 开始迭代 python 字典 (d = {})

转载 作者:太空宇宙 更新时间:2023-11-04 10:39:21 25 4
gpt4 key购买 nike

我有一本字典,我需要从索引 s(不是第一个)开始迭代字典。我这样写

def _get_cell_end_offset(self, d, s, n):
for e in d[s:]:
if e != 0 and d[e][0][1] == ".ends" and d[s][1][1] == n:
return e

创建字典,所以 d = {},我添加元素 d[i] = l

但是在结果中出现了类似

的错误
"Traceback (most recent call last):
File "./main.py", line 23, in <module>
ss = netlist._get_cell_end_offset(s, 9, "NR2_V20_2")
File "/home/ubuntu/synop/net.py", line 16, in _get_cell_end_offset
for e in d[s:]:
TypeError: unhashable type"

我的这种类型的字典

(1, [['START', '.SUBCKT'], ['PIN', 'NR2_V20_1'], ['PIN', 'VDD'], ['PIN', 'VSS'], ['PIN', 'VBP'], ['PIN', 'VBN'], ['PIN', 'X'], ['PIN', 'A1'], ['PIN', 'A2']])
(2, [['ELEMENT', 'R1'], ['PIN', 'X:F93'], ['PIN', 'X:195'], ['PIN', '6.014590e+00']])
(3, [['ELEMENT', 'Cg15'], ['PIN', 'ln_N_76:291'], ['PIN', 'VSS'], ['PIN', '2.133320e-17']])
.........................................................................................
.........................................................................................
.........................................................................................

怎么办?

最佳答案

字典在 python 中是未排序的。这是因为字典是哈希表,它们是根据索引哈希“排序”的。因此,它们也不能像列表或字符串那样被切片(即 seq[i:j])。用更专业的术语来说,字典是映射,而列表、字符串、元组等是序列类型。只有从 Sequences 派生的类型才能被切片。

您可以使用 collections.OrderedDict为了这个目的。它会记住项目添加到字典中的顺序,并允许您像列表一样对其进行迭代。

或者对于您的特定示例,可能只是一个列表。

关于python - 如何从索引 s 开始迭代 python 字典 (d = {}),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21629264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com