我正在学习 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 结果
1 回答
FFIVE
TA贡献1797条经验 获得超6个赞
作为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 x
res = {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')]}
添加回答
举报
0/150
提交
取消