из файла в словарь
есть файл
Daniel, 2
20, slow, card
3, quick, card
30, slow, cash
17, normal, card
Katka, 1.5
13, slow, cash
24, normal, card
Robo, 1
5, normal, cash
11, quick, card
8, slow, card
Sandra, 1.25
38, slow, cash
нужно получить
словарь = {('Daniel', 2.0): [(20, 'slow', 'card'), (3, 'quick', 'card'), (30, 'slow', 'cash'), (17, 'normal', 'card')],('Katka', 1.5): [(13, 'slow', 'cash'), (24, 'normal', 'card')], ('Robo', 1.0): [(5, 'normal', 'cash'), (11, 'quick', 'card'), (8, 'slow', 'card')], ('Sandra', 1.25): [(38, 'slow', 'cash')]}
это часть задания
вторая часть посчитать длинну очереди (время ожидания)
n=0
array1=[]
speed=0
d={}
with open("D:\F\sample1.txt") as file:
for line in file:
array1=line.strip().split(', ')
if (len(array1)==2):
data=''
if len(k)>0:
k=k+']'
# тут формирую справочник
d[k]=data
kassir=array1[0]
speed=float(array1[1])
k='('+"'"+kassir+"'"+'), '+str(spped)+': ['
print(" Key "+k)
n=+1
else:
print(" P "+str(array1))
q_=float(array1[0])
type_kust=array1[1]
type_pay=array1[2]
if len(data)>0:
data=data+', '
data='('+str(q_)+', '+"'"+type_kust+"', '"+type_pay+'")'
print(data)
k=k+']'
d[k]=data
Ответы (1 шт):
Автор решения: Jack_oS
→ Ссылка
Для sample.txt с содержимым:
Daniel, 2
20, slow, card
3, quick, card
30, slow, cash
17, normal, card
Katka, 1.5
13, slow, cash
24, normal, card
Robo, 1
5, normal, cash
11, quick, card
8, slow, card
Sandra, 1.25
38, slow, cash
можно использовать такой код:
with open('sample.txt') as f:
lines = f.readlines()
data = dict()
for line in lines:
line_elements = line.replace('\n', '').split(', ')
if line_elements[0].isalpha():
current_cashier = (line_elements[0], float(line_elements[1]))
data[current_cashier] = []
else:
customer = (int(line_elements[0]), line_elements[1], line_elements[2])
data[current_cashier].append(customer)
в итоге в data будет словарь
{
('Daniel', 2.0): [(20, 'slow', 'card'), (3, 'quick', 'card'), (30, 'slow', 'cash'), (17, 'normal', 'card')],
('Katka', 1.5): [(13, 'slow', 'cash'), (24, 'normal', 'card')],
('Robo', 1.0): [(5, 'normal', 'cash'), (11, 'quick', 'card'), (8, 'slow', 'card')],
('Sandra', 1.25): [(38, 'slow', 'cash')]
}