python - 将矩阵的列附加到不同的字典元素
问题描述
在前面的评论之后,我只包括理解问题所需的代码。我希望这是可以理解的。这是代码:
list_dict = [[] for i in range(10)]
out_dict_2 = {}
out_dict_2.update({'key_a': list_dict, 'key_b': list_dict, 'key_c': list_dict})
for index in range(10):
for line in list_2:
line = line.strip()
line = line.split()
if areallnumbers(line): # check whether all the elements in the list are float
out_dict_2['key_a'][index].append(line[0])
out_dict_2['key_b'][index].append(line[1])
out_dict_2['key_c'][index].append(line[2])
其中 list_2 看起来像编辑:(我还可以有更多相同类型的列表,在我的情况下它们是 10--> for index in range(10):
):
['5.00', '-4601.24', '31.73']
['11.04', '-4517.66', '32.51']
['17.08', '-4418.59', '33.24']
['23.12', '-4305.34', '33.93']
['29.17', '-4179.09', '34.59']
......
我试图将每个列表的第一列附加到一个字典元素,即第一列到 out_dict_2[key_a][index] 等等,所以每个值都是 10 个列表的列表。像这样的东西(假设 10 个列表都等于我给出的示例列表:
key_a [['5.00' , '11.04' , '17.08' , '23.12' , ...],...,['5.00' , '11.04' , '17.08' , '23.12' , ...]]
key_b [['-4601.24', '-4517.66', '-4418.59', '-4418.59', ...],...,['5.00' , '11.04' , '17.08' , '23.12' , ...]]
key_c [['31.73' , '32.51' , '33.24' , '33.93' , ...],...,['5.00' , '11.04' , '17.08' , '23.12' , ...]]
我实际得到的是:
key_a [['5.00', '-4601.24', '31.73'...]['5.00', '-4601.24', '31.73'...]...['5.00', '-4601.24', '31.73'...]
key_b [['5.00', '-4601.24', '31.73'...]['5.00', '-4601.24', '31.73'...]...['5.00', '-4601.24', '31.73'...]
key_c [['5.00', '-4601.24', '31.73'...]['5.00', '-4601.24', '31.73'...]...['5.00', '-4601.24', '31.73'...]
好像每一行都附加到每个字典键上,为什么?
解决方案
我不确定 list_2 应该是什么。如果 list_2 应该是列表列表,请尝试:
for index in range(10):
for line in list_2:
print("index={0}, line = {1}".format(index, line)) #insert this line
...
我仍然不确定 list_2 是什么。以下内容可能会给你你想要的。如果您可以打印 list_2 定义,它将有所帮助:
list_2 = [['5.00', '-4601.24', '31.73'],
['11.04', '-4517.66', '32.51'],
['17.08', '-4418.59', '33.24'],
['23.12', '-4305.34', '33.93'],
['29.17', '-4179.09', '34.59']]
out_dict_2 = {'key_a': [[] for i in range(10)],
'key_b': [[] for i in range(10)],
'key_c': [[] for i in range(10)]}
display(out_dict_2)
for lnum, line in enumerate(list_2):
all_numeric = True
row = []
for item in line:
try:
row.append(float(item))
except:
print("skipped line: all values are not numeric: {0}".format(line))
all_numeric = False
if all_numeric:
out_dict_2['key_a'][lnum].append(row[0])
out_dict_2['key_b'][lnum].append(row[1])
out_dict_2['key_c'][lnum].append(row[2])
display(out_dict_2)
推荐阅读
- xcode - 架构 arm64 的未定义符号:以前的解决方案在 Xcode 12.5.1 中不起作用
- acumatica - Acumatica Report Designer Concat 变量显示不完整的字段
- javascript - 嵌入多次添加同一行
- python - Python:For循环更改多个对象的1个属性
- mysql - 按日期和其他列计算最后一个条目
- c# - 将动态类型传递给抽象覆盖方法
- amazon-web-services - 如何使用 spark 读取 Amazon SQS
- azure - Azure:如何为另一个租户中的应用注册创建 SQL 外部用户?
- r - R - 如何从字符向量中删除重复的字符串
- spring-boot - Spring Boot 需要 spring-boot-starter-security 作为 ssl 的依赖项