我正在学习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提供了相同的密钥,则仅保留Supplier1。而且,如果没有给定供应商1密钥的结果,请与其他供应商保持结果。
编辑:所需输出:
{
'1234' : [('1,60', 'text', 'supplier1')],
'3456' : ['1,54', 'text again', 'supplier1'],
'709' : [('2,90', 'again', 'supplier2')]
}
最好的方法是什么?我不想只保留Supplier1的结果
答案 0 :(得分:0)
由于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')]}