Ваш "user_list" - это не список, это диктат.Ключи dicts являются уникальными, поэтому, поскольку вы используете один и тот же ключ («имя пользователя») для всех пользователей, в dict фактически сохраняется только одно значение, то есть:
>>> d = {"username":"foo", "username":"bar", "username":"baaz"}
>>> d
{'username': 'baaz'}
Также применяется zip()
кДиктофон только выбирает ключи диктов:
>>> list(zip(d))
[('username',)]
Решение состоит в том, чтобы создать user_list
правильный список - либо список диктов:
>>> users = [{"username":"foo"}, {"username":"bar"}, {"username":"baaz"}]
>>> for user in users:
... print(pattern.format(**user))
или более просто (так как выиметь одно значение в каждом диктовке) список строк имени пользователя:
>>> usernames = ["foo", "bar", "baaz"]
>>> for username in usernames:
... print(pattern.format(username=username))