生成器结果

时间:2017-05-03 13:53:55

标签: python dictionary

我想为我的作品制作一个应用程序,所以我记下发送给我的客户的软件包 所以我有一个包含我的客户列表及其代码的字典 我想要我的应用程序要做的是导入多个代码数字与我的字典中的键进行比较并获取项目....因为代码编号不能是整数我必须操纵它们作为一个字符串将它们与一个字符串组合起来生成器并将结果返回

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我得到===> 0069,0078,0054,

我的问题是我如何比较这3个生成器的结果,将它们与字典的键进行比较并获取项目?

1 个答案:

答案 0 :(得分:0)

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函数返回一个列表,而不是生成器。如果您的数据集很小,那就没关系。如果没有,研究发电机功能。