Like I said in the post before the last one, get_fields() will only get fields that have values, that’s why your first function is not setting the defaults you want. See that comment for more information.
Yes. creating an array in the first example would be more manual where you list exactly what rows you want to check. If you did it the first way you could eliminate getting values for fields you don’t need to look at an concentrate entire on the setting defaults part.