如何在forloop中从字典中获取单个值

时间:2019-09-07 13:55:09

标签: python python-3.x dictionary

我有一个字典,上面写着这样的信息;

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

我该怎么做才能区分两个值之间的差异,以便我可以对它们进行计算?

2 个答案:

答案 0 :(得分:3)

如评论中提到的人,请使用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]

答案 1 :(得分:0)

作为您的预期结果,让我们尝试以下代码:

for key in yourdict.keys():
    for item in yourdict[key]:
        print(item)

结果是

[' 1992', ' 1992', ' 110.0']
[' 1992', ' 1993', ' 170.0']
[' 1993', ' 1993', ' 200.0']
[' 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']

如您所愿。