如何过滤defaultdict?

我正在学习 python 来浏览数据。我有一个 CSV 输入文件,我将其组织为 defaultdict。


它看起来像这样:


{

 '1234' : [('1,60', 'text', 'supplier1')],

 '3456' : [('1,98', 'another text', 'supplier2')],

 ['1,54', 'text again', 'supplier1'],

 '709' : [('2,90', 'again', 'supplier2')] 

}

我想要的是优先包含例如“supplier1”的元组。如果supplier1 和2 有相同key 的结果,只保留supplier1。如果供应商 1 的给定密钥没有结果,则将结果保留给其他供应商。


编辑:所需的输出:


{

 '1234' : [('1,60', 'text', 'supplier1')],

 '3456' : ['1,54', 'text again', 'supplier1'],

 '709' : [('2,90', 'again', 'supplier2')] 

}

最好的方法是如何做到这一点?我不想只保留供应商 1 结果


临摹微笑
浏览 153回答 1
1回答

FFIVE

作为defaultdict的子类dict,我们可以假设一个常规的列表字典(同时,我已经修复了一些我认为是拼写错误的语法错误):d = {'1234' : [('1,60', 'text', 'supplier1')],     '3456' : [('1,98', 'another text', 'supplier2'),               ('1,54', 'text again', 'supplier1')],     '709' :  [('2,90', 'again', 'supplier2')]}然后,您可以使用带有自定义函数的字典理解来执行您的任务:def get_data(x):    for tup in x:        if tup[-1] == 'supplier1':            return [tup]    return xres = {k: get_data(v) for k, v in d.items()}{'1234': [('1,60', 'text', 'supplier1')], '3456': [('1,54', 'text again', 'supplier1')], '709':  [('2,90', 'again', 'supplier2')]}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python