我有两个散列FP['NetC']
,其中包含连接到特定网络的所有单元格,例如:
'net8': ['cell24', 'cell42'], 'net19': ['cell11', 'cell16', 'cell23', 'cell25', 'cell32', 'cell38']
和FP['CellD_NM']
包含每个单元格的x1,x0坐标,例如:
{'cell4': {'Y1': 2.164, 'Y0': 1.492, 'X0': 2.296, 'X1': 2.576}, 'cell9': {'Y1': 1.895, 'Y0': 1.223, 'X0': 9.419, 'X1': 9.99}
我需要创建一个新的哈希(或列表),它将为特定网络中的每个单元格提供x0和x1。例如:
NET8: cell24 {xo,x1} cell42 {xo,x1} 净18: cell11 {xo,x1} ...
这是我的代码
L1={}
L0={}
for net in FP['NetC']:
for cell in FP['NetC'][net]:
x1=FP['CellD_NM'][cell]['X1']
x0=FP['CellD_NM'][cell]['X0']
L1[net]=x1
L0[net]=x0
print L1
print L0
我得到的只是每个网的最后一个值。
你有什么想法吗?
答案 0 :(得分:2)
您遇到的问题是,您为每个x0
生成x1
和cell
个值,但仅按net
分配结果。由于每个网络都有多个单元格,因此会覆盖除每个网格之外的所有网格。
看起来你想要嵌套字典,你可以像X0[net][cell]
那样编制索引。以下是如何实现这一目标的:
L0 = {}
L1 = {}
for net, cells in FP['NetC'].items(): # use .iteritems() if you're using Python 2
L0[net] = {}
L1[net] = {}
for cell in cells:
L0[net][cell] = FP['CellD_NM'][cell]['X0']
L1[net][cell] = FP['CellD_NM'][cell]['X1']
答案 1 :(得分:1)
试试这个:
for net in FP['NetC']:
L1[net] = []
L0[net] = []
for cell in FP['NetC'][net]:
x1=FP['CellD_NM'][cell]['X1']
x0=FP['CellD_NM'][cell]['X0']
L1[net].append(x1)
L0[net].append(x0)