我有一个字典,其中的信息看起来像这样;
Comp [[' 1992', ' 1992', ' 110.0'], [' 1992', ' 1993', ' 170.0'], [' 1993', ' 1993', ' 200.0']]
Non-Comp [[' 1990', ' 1990', ' 45.2'], [' 1990', ' 1991', ' 64.8'], [' 1990', ' 1993', ' 37.0'], [' 1991', ' 1991', ' 50.0'], [' 1991', ' 1992', ' 75.0'], [' 1991', ' 1993', ' 25.0']]
这是字典的样子
dict = {
'Comp': [
[' 1992', ' 1992', ' 110.0'],
[' 1992', ' 1993', ' 170.0'],
[' 1993', ' 1993', ' 200.0']
],
'Non-Comp': [
[' 1990', ' 1990', ' 45.2'],
[' 1990', ' 1991', ' 64.8'],
[' 1990', ' 1993', ' 37.0'],
[' 1991', ' 1991', ' 50.0'],
[' 1991', ' 1992', ' 75.0'],
[' 1991', ' 1993', ' 25.0'],
[' 1992', ' 1992', ' 55.0'],
[' 1992', ' 1993', ' 85.0'],
[' 1993', ' 1993', ' 100.0']
]
}
我目前正在尝试通过执行 for 循环来读取数据,但我不知道在哪里将数据从一个键的值截断到另一个键的值。
for k,v in dict.items():
for i in v:
print(i)
这会打印这个;
[' 1992', ' 1992', ' 110.0'] # Comp
[' 1992', ' 1993', ' 170.0'] # Comp
[' 1993', ' 1993', ' 200.0'] # Comp
[' 1990', ' 1990', ' 45.2'] # Non-Comp
[' 1990', ' 1991', ' 64.8'] # Non-Comp
[' 1990', ' 1993', ' 37.0'] # Non-Comp
[' 1991', ' 1991', ' 50.0'] # Non-Comp
[' 1991', ' 1992', ' 75.0'] # Non-Comp
我该怎么做才能分辨出这两个值之间的差异,以便我可以对它们进行计算?
最佳答案
正如评论中提到的那样,使用k
:
my_dict = {
'Comp': [
[' 1992', ' 1992', ' 110.0'],
[' 1992', ' 1993', ' 170.0'],
[' 1993', ' 1993', ' 200.0']
],
'Non-Comp': [
[' 1990', ' 1990', ' 45.2'],
[' 1990', ' 1991', ' 64.8'],
[' 1990', ' 1993', ' 37.0'],
[' 1991', ' 1991', ' 50.0'],
[' 1991', ' 1992', ' 75.0'],
[' 1991', ' 1993', ' 25.0'],
[' 1992', ' 1992', ' 55.0'],
[' 1992', ' 1993', ' 85.0'],
[' 1993', ' 1993', ' 100.0']
]
}
data = []
for k, rows in my_dict.items():
for row in rows:
item = (k, row[0], row[1], row[2])
data.append(item)
注意最好避免使用 dict
作为变量名,因为这会覆盖内置的 dict
关键字,这意味着您稍后可能会在代码中遇到以下问题:你想使用它。
我们可以使用元组拆包来更简洁地创建item
变量:
data = []
for k, rows in my_dict.items():
for row in rows:
item = (k, *row) # unpacks the rows variable as individual parts into item
data.append(item)
然后我们可以使用列表理解将整个事情作为一个单行来完成:
data = [(k, *row) for k, rows in my_dict.items() for row in rows]
关于python - 如何在for循环中从字典中获取单个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57834340/