python - 如何在for循环中从字典中获取单个值

标签 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

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

最佳答案

正如评论中提到的那样,使用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/

相关文章:

ios - 使用 Swift 根据搜索文本搜索数组

python - 用其他字符替换前导空格 - Python

python - 如何使用 psycopg2.sql 将列列表或 *(所有列)传递给动态 SQL 查询

python - 超集 : Where to force an autologin

python - 有没有办法清除 QListWïdget 中除 1 个特定行之外的所有行

c++ - 字典可以在c++中使用吗

python - 如何按字母顺序对字符串进行排序,小写字母排在大写字母之前?

python-3.x - Matplotlib:仅将单元格颜色应用于某些列/单元格

python - 如何使用偶数和奇数函数同步两个线程

swift - 在 Swift 4 中使用索引进行映射/归约