Python 生成器结果

Python 生成器结果,python,dictionary,Python,Dictionary,我想为我的工作制作一个应用程序,所以我会记下发送给客户的包 所以我有一本字典,上面有我的客户名单和他们的代码 我想让我的应用程序做的是导入多个代码,将它们与我字典中的键进行比较,然后取回这些项。。。。因为代码不能是整数,所以我必须将它们作为字符串进行操作,并使用生成器将它们分块,然后返回结果 farmcod = { "0039":"ΑΤΣΑΛΗ Μ.","0056":"ΒΑΡΔΙΑΜΠΑΣΗΣ Κ.", "0138":"ΒΟΥΜΒΟΥΡΑΚΗ Α.","0047":"ΓΕΩΡΓΟΥΛΑΚΗ

我想为我的工作制作一个应用程序,所以我会记下发送给客户的包 所以我有一本字典,上面有我的客户名单和他们的代码 我想让我的应用程序做的是导入多个代码,将它们与我字典中的键进行比较,然后取回这些项。。。。因为代码不能是整数,所以我必须将它们作为字符串进行操作,并使用生成器将它们分块,然后返回结果

farmcod = { "0039":"ΑΤΣΑΛΗ Μ.","0056":"ΒΑΡΔΙΑΜΠΑΣΗΣ Κ.",  
"0138":"ΒΟΥΜΒΟΥΡΑΚΗ Α.","0047":"ΓΕΩΡΓΟΥΛΑΚΗ Κ.","0087":"ΓΟΥΜΕΝΑΚH 
Κ.","0035":"ΓΥΠΑΡΗ Ε.",}

def chunker(seq, size):
return [seq[pos:pos + size] for pos in range(0, len(seq), size)]

kodfain = input ('pharmacy key : ') 

for group in chunker(kodfain, 4):

print (group,",",sep="",end='')
所以如果我输入006900780054,我得到==>006900780054

我的问题是如何将这3个生成器的结果与字典的键进行比较,然后将项目取回

farmcod = {"0039": "ΑΤΣΑΛΗ Μ.", "0056": "ΒΑΡΔΙΑΜΠΑΣΗΣ Κ.",  "0138": "ΒΟΥΜΒΟΥΡΑΚΗ Α.",
           "0047": "ΓΕΩΡΓΟΥΛΑΚΗ Κ.", "0087": "ΓΟΥΜΕΝΑΚH Κ.", "0035": "ΓΥΠΑΡΗ Ε.", }


# this returns a list, not a generator. Shouldn't matter unless your dataset is huge
def chunker(seq, size):
    return [seq[pos:pos + size] for pos in range(0, len(seq), size)]

kodfain = "006900780054"

for group in chunker(kodfain, 4):
    code = farmcod.get(group, None)
    if code:
        # do something with the code
        print(code)
    else:
        # it wasn't found
        print('code not found for', group)
一些注意事项:

  • 如果速度很重要,并且您希望您的大多数团队都在
    farmcod
    中,那么您可能希望使用
    try catch
    块,而不是
    If else
    块。它可能更快
  • chunker
    函数返回的是列表,而不是生成器。如果你的数据集很小,那没关系。如果没有,请研究发电机的功能

缩进在Python中很重要。你能把代码正确缩进吗?生成器在哪里?我看不到任何内容。你可以完全跳过它,只需执行
code=farmcod.get(group,'code not found for{}.format(code))
,然后打印它。@Ev.Kounis如果你只想打印它,你可以这样做,但如果你想提示用户输入代码或做一些错误处理(我肯定他会在失败的情况下做一些特殊的事情),不管怎样,你必须重新引入
,否则
。@NikolaosGasparis,那是另一个问题。但看起来您需要一个
while
循环。Google‘input loop python’并将您找到的内容进行篡改,直到它达到您想要的效果:)。用户每次都会导入多个代码,因此我需要输入循环无限次,直到用户打破循环为止。我尝试将输入结果直接放入列表中,但我无法使迭代器以4个字符为一组插入我得到的结果是[0,1,2,3,4,5,6,7,8]而不是[12345678]如果我有第二个列表,至少我会找到一种方法来比较字符串和键,并获得项目back@NikolaosGasparis因此,将上面的代码放入一个输入循环,并在每次迭代中更新字典。