代码之家  ›  专栏  ›  技术社区  ›  Rabinzel

Python dictionary,如何创建一个字符串与实际键组合的键?

  •  0
  • Rabinzel  · 技术社区  · 3 年前

    Test Dataframe

    {'Messung':{0:'10bar',1:'10bar',2:'10bar',3:'20bar',4:'20bar',5:'20bar',6:'30bar',7:'30bar',8:'30bar',9:'10bar',11:'40bar',12:'40bar',13:'40bar',15:'40bar',Zahl:{0:1,1:2,2:3,3:4,4:5,5:6,6:7,7:8,8:9,9:10,10,10,11:12,12:13,15:14,},“Buchstabe”:{0:'a',1:'b',2:'c',3:'d',4:'e',5:'f',6:'g',7:'h',8:'i',9:'j',10:'k',11:'l',12:'m',13:'n',14:'o',15:'p'}

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

    有一个DataFrame(为本文做了一个更简单的测试DF),请参见图片,我循环了一列,比较了字符串的前两个数字。整个专栏最后大概有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”等等?

    0 回复  |  直到 3 年前
        1
  •  0
  •   Kapil Rupavatiya    3 年前

    你能试试下面的代码吗。如果条件允许,你会犯一个小错误。

    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的setdefault()。然后,您的代码如下所示:

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

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

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