#python-3.x
Вопрос:
Я пытаюсь сравнить два набора данных (файл1,файл2) в формате словаря. При сравнении с использованием примера 1 (см. Ниже) код работает, но когда я добавляю больше данных (пример 2) Я получаю ошибку, так как индексы кортежей должны быть целыми или срезами. Я изо всех сил пытаюсь понять это, так как я сравниваю два набора словарей, а не список, чтобы использовать целое число для сравнения, используя целые числа в индексе, а не имя ключа в словаре.
#Список диктантов пример 1: в этом примере это работает
file1= {'name': 'Phill', 'age': 42}
file2= {'name': 'Phill', 'age': 22}
#Список диктантов пример 2: в этом примере это не работает
file1= {'name': 'Phill', 'age': 42},{'name': 'Phill', 'age': 22}
file2= {'name': 'Phill', 'age': 22},{'name': 'Phill', 'age': 52}
#Function with two args
def diffValue (file1,file2) :
for newAge in file1,file2 :
if file1 [ 'age' ] == file2 [ 'age' ] :
# if no difference found in both files within the age field
print ( "No difference found" )
else :
# the age is different. return values name,age where ever there is a difference from file1 only
return newAge
Ожидаемые результаты:
Return {'name': 'Phill', 'age': 42},{'name': 'Phill', 'age': 22}
Ответ №1:
Я думаю, ты хотел сделать что-то подобное:
file1 = {'name': 'Phill', 'age': 42}, {'name': 'Phill', 'age': 22}
file2 = {'name': 'Phill', 'age': 22}, {'name': 'Phill', 'age': 52}
def diff_value(f1, f2):
# Create a list to store the differences
diffs = []
# Iterate for every element in parallel
for v1, v2 in zip(f1, f2):
if v1['age'] == v2['age']:
# If no difference found in both files within the age field
print('No difference found')
else:
# The age is different, append v1 to `diffs`
diffs.append(v1)
return diffs
print(diff_value(file1, file2))
# Output: [{'name': 'Phill', 'age': 42}, {'name': 'Phill', 'age': 22}]
Ответ №2:
>>> file1= {'name': 'Phill', 'age': 42},{'name': 'Phill', 'age': 22}
>>> file1
({'name': 'Phill', 'age': 42}, {'name': 'Phill', 'age': 22})
>>> type(file1)
<class 'tuple'>
файл1 является кортежем, поэтому он выдает ошибку
один из способов заставить его работать с вашей функцией-это:
def diffValue (file1,file2) :
for newAge in file1,file2 :
if file1 [ 'age' ] == file2 [ 'age' ] :
# if no difference found in both files within the age field
print ( "No difference found" )
else :
# the age is different. return values name,age where ever there is a difference from file1 only
return newAge
file1= [{'name': 'Phill', 'age': 42},{'name': 'Phill', 'age': 22}]
file2= [{'name': 'Phill', 'age': 22},{'name': 'Phill', 'age': 52}]
a=""
for i in range(len(file1)):
a =str(diffValue(file1[i],file2[i])) ","
a=a[:-1]
print(a)