【发布时间】:2019-10-05 00:30:12
【问题描述】:
我有字典 d,其中每个键的所有值都存储在一个数组中
d = {'0': [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0], '1': [1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0], '2': [1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0], '3': [1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0], '4': [1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]}
和字典
d1 = {'0': ('2',), '1': ('1', '3', '4'), '2': ('1', '3', '4'), '3': ('2', '4'), '4': ('2', '3', '5')}
d2 = {'0': ('1', '3', '4'), '1': ('2', '4'), '2': ('2', '3', '5'), '3': ('2', '3', '5'), '4': ('4',)}
我想构建字典data,它包含字典d中相同的键和值,但存储的值被分成许多数组(取决于键)而不是一个数组!
因此,字典 d 将使用 d1 和 d2 的长度转换为字典 data。
如何?对于每个键,值将被划分为(len(d1[key]) + len(d2[key])) 数组,其中每个数组将包含(len(d1[key]) * len(d2[key])) 值。
例如,
d['0']= [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0]。
由于len(d1['0'])=1 和len(d2['0'])=3 然后
data['0'] = [[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0], [1.0, 1.0, 1.0]]
我一直在尝试,但我真的不知道该怎么做!即如何将第一个(len(d1[key]) * len(d2[key])) 值存储在一个数组中,然后移动到下一个(len(d1[key]) * len(d2[key])) 值并将它们存储在一个数组中,一旦我有(len(d1[key]) + len(d2[key])) 数组将它们存储为键的值!
这是我所做的,但它没有给我想要的字典!
data = defaultdict(list)
first_data = [] #array contains len(d1[key])*len(d2[key]) values
second_data = [] #array contains len(d1[key])+len(d2[key]) arrays
for key in constraints:
for values in range( (len(d1[key])*len(d2[key])) * (len(d1[key])+len(d2[key])) ):
for values in range(len(d1[key])*len(d2[key])):
first_data.append(values)
values += values
second_data.append(first_data)
data[key] = second_data
【问题讨论】:
标签: python arrays python-3.x dictionary for-loop