TypeError: аргумент float () должен быть строкой или числом для python - PullRequest
0 голосов
/ 13 декабря 2018

Я выполняю некоторые вычисления, где делю два значения.Значения, которые я делю, представляют собой два разных списка.Так что я знаю, что не могу разделить список со списком.Я не уверен, как я могу это сделать.В настоящее время мой код выглядит следующим образом:

def files(currentd, previousd):

    with open(currentd, 'r') as current_data_file,\
            open(previousd, 'r') as pre_data_file:

        # load both data
        data_current = [json.loads(line) for line in current_data_file]
        data_previous = [json.loads(line) for line in pre_data_file]


        # store the previous names for  lookup
        pre_names = set([data["File Name"] for data in data_previous])
        pre_sizes = set([data["File Size"] for data in data_previous])
        cur_sizes = set(data["File Size"] for data in data_current)
        cur_names = set(data["File Name"] for data in data_current)



        # loop through all current data for matching names

        print("Looping through \n")

        for data in data_current:

           if data["File Name"] in pre_names :


               if pre_sizes is None and cur_sizes is None:
                  return "both missing"


               size_ratio = float(cur_sizes) / pre_sizes

1 Ответ

0 голосов
/ 13 декабря 2018

Вы можете хранить данные из ваших файлов в виде словарей, а не наборов, а затем искать файлы, которые находятся как в предыдущих, так и в текущих данных, чтобы добавить их отношение к требованию, которое мы собираемся вернуть.

def files(currentd, previousd):
    # created example data
    data_current = [{'File Name': 'file1', 'File Size': 100}, {'File Name': 'file2', 'File Size': 600}]
    data_previous = [{'File Name': 'file2', 'File Size': 300}]

    # store the previous names for  lookup
    current = {i["File Name"]: i["File Size"] for i in data_current}
    previous = {i["File Name"]: i["File Size"] for i in data_previous}
    ratios = {}

    # loop through all current data for matching names
    for data in current.keys():
        if data in previous.keys():
            ratios[data] = float(current[data]) / previous[data]

    return ratios

print(files(0, 0)) # -> {'file2': 2.0}
...