x = {"a": 1, "b": 2}
y = {"c": 3, "d": 4}

z = {**x, **y}

print(z)


person1 = {"name": "John Doe", "age": 25, "job": "Python Developer"}
print(person1)


person2 = dict(name="Jane Doe", age=24, job="Web Developer")
print(person2)


person1 = {"name": "John Doe", "age": 25, "job": "Python Developer"}
print(person1["name"])
print(person1["age"])
# Retrieve all the keys
print(person1.keys())

# Retrieve all the values
print(person1.values())

# Retrieve all the key-value pairs
print(person1.items())


def myfunc(x, y, z):
    print(x, y, z)


tuple_vec = (1, 0, 1)
dict_vec = {"x": 1, "y": 0, "z": 1}

myfunc(*tuple_vec)


myfunc(**dict_vec)


countries = ["Togo", "Palau", "Japan"]
codes = ["TG", "Pw", "JP"]


# Using indexing.
d = {}
for i in range(len(codes)):
    d[codes[i]] = countries[i]
print(d)


# Replacing indexing with “zip.
d = {}
for code, country in zip(codes, countries):
    d[code] = country
print(d)


# Replace Loop with dict comprehension.
print({code: country for code, country in zip(codes, countries)})


# Replace dict comprehension with “dict~ call.
print(dict(zip(codes, countries)))
