У меня есть CSV-файл, который состоит из
a,b
2,3
4,5
4,7
4,7
(где a, b - значения столбца) Ниже у меня есть две функции, где первая функция будет читать CSV и назначать «a» в качестве ключа и «b» в качестве значения всловарь
Вторая функция i передает значение «a» в качестве аргумента и возвращает b в качестве значения, когда я использую эту функцию. Если нет значения для «a», я получаю None.
def x (id):
dict1= {}
with open(file, 'r', encoding='utf') as f:
for i in csv.DictReader(f, skipinitialspace= True)
dict1[i['a']] = row['b']
print('im happy now' )
def getx (a):
return dict1.get(a, None)
Работает отлично.
Теперь у меня есть CSV-файл с четырьмя значениями столбцов
a,b,c,d
1,2,r,4
2,g,4,6
3,d,4,6
Для этого я написал код, подобный
def x ():
dict1= {}
with open(file, 'r', encoding='utf') as f:
for i in csv.DictReader(f, skipinitialspace= True)
dict1[i['a']] = dict(dict1[i['b']] = dict(dict1[i['c']] = row['d']))
print('im happy now' )
def getx (a):
return dict1.get(dict1['a']['b']['c'], None)
Моя логика состоит в том, чтобы показать
dict1[i['a']] = dict(dict1[i['b']] = dict(dict1[i['c']] = row['d']))
как
dict1 :{
'a':{
'b':{
'c':2,
'c':4,
'c':4
}
}
}
Я не уверен, правильно ли написанное выше.
Мне нужно вернуть 'd 'как значение, когда я передаю dict1 [a [] b] [c]. Он возвращает мне пустое значение.
Ожидаемое значение для комбинации a, b, ci нужно значение как d.
Например, из вышеуказанного csv. Для комбинации 1, 2, при возврате нужно вернуть 4
Обновление:
Я понял, что столбец 'a' имеет повторяющиеся значения и его нельзя обрабатывать в словарных ключах, которые пропускают запись дублирующегося ключа.
from collections import defaultdict
dict_1 = defaultdict(list)
with open('file.txt','r') as f:
for r in f.readline():
i= r['a']
j= r['b']
k= r['c']
l =r['d']
details = [j,k,l]
dict_1[i].append((details))
print(dict_1)
, что дает мне
{'1' :[('k', '3', '5'),('e','3','2')], '4' :[('r','3','2'),('e','2','1')],....................}
Если у меня есть dict_1 в моей первой функции, как указано выше. Теперь любые предложения, например, как я могу получить значение 'd', передав a, b, c в качестве аргумента во вторую функцию, иначе NONE?