当密钥相同时,CSV中的特定行作为字典和逻辑 - Python

时间:2015-06-15 18:45:58

标签: python csv dictionary

abc11  bvc  ex  123  456  somestuffhere
abc11  bvc  ex  456  476  somestuffhere
abc12  bvc  ex  173  426  somestuffhere
abc12  bvc  ex  426  496  somestuffhere
abc13  bvc  ex  143  796  somestuffhere
abc13  bvc  ex  743  896  somestuffhere

我正在尝试将上述CSV文件作为字典{'abc11':['123','476'],'abc12':['173','496'],'abc13':['143','896']}。我希望第0列值作为键,第三列和第四列作为值,只有当键相同时的最小值(或第三列)和最大值(或第四列)。我也不确定这些值是否作为字典中的列表是最好的,因为我需要稍后用另一个列表检查这些值。

2 个答案:

答案 0 :(得分:1)

您可以首先构建整个字典,其中列表包含每个键的所有值。然后,一旦制作了字典,您就可以浏览每个键并获取最大和最小值。

tabItem

此外,您的上述文件不是CSV文件,CSV文件是逗号分隔文件。您的文件用空格分隔,我的代码用于由空格分隔的文件,而不是CSV。如果你真的有一个CSV文件,它很容易改变。

答案 1 :(得分:0)

你可以这样做:

d = {}

with open(file) as f:
   for line in f:
       if line.split()[0] not in d:
           d[line.split()[0]] = [line.split()[3],line.split()[4]]
       else:
           d[line.split()[0]] = [min(line.split()[3],d[line.split()[0]][0]), max(line.split()[4],d[line.split()[0]][1])]