Write a function that takes a dictionary representing points in 3D space and an associated color for each point, and returns the centroid of the set of points in each color as another dictionary. The keys in the input dictionary are tuples representing the coordinates of points in 3D space and the values are strings representing colors. The keys in the resulting dictionary are colors, and the values are tuples representing the centroids. For example, the following is a valid input dictionary: dict1 = {(1,1,1):"red", (2,1,-1):"green", (0,-1,1):"red", (0,0,-2):"blue"} In this case, there are 2 red points, and their centroid is at ( (1+0)/2, (1-1)/2, (1+1)/2 ) = (0.5, 0, 1) Considering that in this example there is only one green and one blue point, they are representing the respective color's centroid. Hence, your function should return the following dictionary: {"red":(0.5,0.0,1.0), "green":(2.0,1.0,-1.0), "blue":(0.0,0.0,-2.0)} Note that, there is no restriction on the number of different colors that may exist in the input dictionary. You should only report for existing colors, and you should report them all. without any numpy or array. i need write this code but i always get none
Write a function that takes a dictionary representing points in 3D space and an associated color for each point, and returns the centroid of the set of points in each color as another dictionary. The keys in the input dictionary are tuples representing the coordinates of points in 3D space and the values are strings representing colors. The keys in the resulting dictionary are colors, and the values are tuples representing the centroids. For example, the following is a valid input dictionary: dict1 = {(1,1,1):"red", (2,1,-1):"green", (0,-1,1):"red", (0,0,-2):"blue"} In this case, there are 2 red points, and their centroid is at ( (1+0)/2, (1-1)/2, (1+1)/2 ) = (0.5, 0, 1) Considering that in this example there is only one green and one blue point, they are representing the respective color's centroid. Hence, your function should return the following dictionary: {"red":(0.5,0.0,1.0), "green":(2.0,1.0,-1.0), "blue":(0.0,0.0,-2.0)} Note that, there is no restriction on the number of different colors that may exist in the input dictionary. You should only report for existing colors, and you should report them all. without any numpy or array.
i need write this code but i always get none
Program:
# method to find centroid
def centroid(dict1):
dictRes={}
#traverse the dictionary
for key in dict1:
result=key
count=1
for key1 in dict1:
# match values in the dictionary
if (dict1[key]==dict1[key1]) and key!=key1:
x = (result[0]+key1[0])
y = (result[1]+key1[1])
z = (result[2]+key1[2])
count=count+1
result=(x,y,z)
result = [x/count for x in result]
# create a new dictionary with the colours
if dict1[key] not in dictRes:
dictRes[dict1[key]] = result
return dictRes
dict1 = {(1,1,1):"red", (2,1,-1):"green", (0,-1,1):"red", (0,0,-2):"blue"}
print("Resulting centroid dictionary: ")
print(centroid(dict1))
Screenshot of the program:
Trending now
This is a popular solution!
Step by step
Solved in 3 steps with 2 images