Python 字典,如何创建一个包含字符串和实际键组合的键?

Python dictionary, how can I create a key with a string and the actual key combined?

我希望这是一个非常简单的问题,但对于没有很多 python 背景的我来说,我找不到答案。

df = pd.DataFrame(
    {'Messung': ['10bar','10bar','10bar','20bar','20bar'],  
     'Zahl': [1, 2, 3, 4, 5],  
     'Buchstabe': ['a','b','c','d','e']})  

有一个 DataFrame(为此 post 制作了一个更简单的测试 DF),我在其中循环遍历一列并比较字符串的前 2 个数字。整个专栏最后有 20 个键。每次找到该键时,将整行附加到该键。

d={}
for row, item in enumerate(df['Messung']):
    key=item[0:2]
    if key not in d:
        d[key] = []
    d[key].append(df.iloc[row])

此代码有效,但我的第一次尝试是不同的。 我想要字典,其中的键名为 'RP_10'、'RP_20'.

d={}
for row, item in enumerate(df['Messung']):
    key=item[0:2]
    if key not in d:
        d['RP_'+key] = []
    d['RP_'+key].append(df.iloc[row])

有人可以向我解释一下为什么这不起作用吗?我如何编写代码才能得到 'RP_10'、'RP_20' 等等?

你能试试下面的代码吗?你在 if 条件下犯了一个小错误。

d={}
for row, item in enumerate(df['Messung']):
    key=item[0:2]
    key = "RP_"+key
    if key not in d:
        d[key] = []
    d[key].append(df.iloc[row])

您还可以使用 python.Then 的 setdefault(),您的代码如下所示:

d={}
for row, item in enumerate(df['Messung']):
    key=item[0:2]
    key = "RP_"+key
    d.setdefault(key, []).append(df.iloc[row])

在尝试您的解决方案时我注意到,我什至可以删除带有 key=item[0:2] 的行并直接使用 'RP_' 和 item[0:2][=11= 构建我的密钥]

d={}
for row, item in enumerate(df['Messung']):
    key = "RP_"+item[0:2]
    d.setdefault(key, []).append(df.iloc[row])