Как создать словарь внутри словаря на Python с тремя разными значениями, где date - ключ к первому словарю, второй dict (где city - ключ, а количество дождя - значение) и второй словарь - это значение первого.

import csv

def read_data(file):
    open('file', 'r') as f:
        r = csv.reader(f, delimiter = ',')
        s = {}
        for row in r:
            row = vrstica[a][b]
            while a == 0 and b > 0:
                row = int(key1)
            while row == row[0]:
                row = key2
            else:
                row = value

        key1 = dict((key2,value) for row in reader)
        s = dict(key1)

    return s
0
nup12 2 Янв 2018 в 22:49

2 ответа

Лучший ответ

В том же примере:

import pandas as pd

data = '''\
1/1/2018    boston  5
1/1/2018    chicago 7
1/2/2018    boston  9
1/2/2018    chicago 3'''

file = pd.compat.StringIO(data) # change to path

df = pd.read_csv(file, sep='\s+', header=None, names=list('ABC'))

# Use pandas and groupby
df.groupby(df.A)['B','C'].apply(lambda x: x.set_index('B')['C'].to_dict()).to_dict()

И вы получаете

{'1/1/2018': {'boston': 5, 'chicago': 7},
 '1/2/2018': {'boston': 9, 'chicago': 3}}
0
Anton vBR 2 Янв 2018 в 21:31

Если вы получаете значение дождя один раз в день для каждого города, вы можете сделать это, как показано ниже. Если вы получаете их несколько раз в течение дня, вам может потребоваться list для хранения значений данных о дождях для каждого города.

Надеюсь это поможет.

s = {}
with open(csvfile, 'r') as f:
    r = csv.reader(f, delimiter = ',')    
    for row in r:
        key = row[0]
        if not key in s:
            s[row[0]]={row[1]:row[2]}
        else:
            s[row[0]].update({row[1]:row[2]})

csvdata

1/1/2018    boston  5
1/1/2018    chicago 7
1/2/2018    boston  9
1/2/2018    chicago 3

Содержание словаря

>>> s
{'1/1/2018': {'boston': '5', 'chicago': '7'}, '1/2/2018': {'boston': '9', 'chicago': '3'}}
1
Anil_M 2 Янв 2018 в 20:28