Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

unordered_map<int, vector<float>> equivalent in Python

I need a structure in Python which maps an integer index to a vector of floating point numbers. My data is like:

[0] = {1.0, 1.0, 1.0, 1.0}
[1] = {0.5, 1.0}

If I were to write this in C++ I would use the following code for define / add / access as follows:

std::unordered_map<int, std::vector<float>> VertexWeights;
VertexWeights[0].push_back(0.0f);
vertexWeights[0].push_back(1.0f);
vertexWeights[13].push_back(0.5f);
std::cout <<vertexWeights[0][0];

What is the equivalent structure of this in Python?

like image 969
Cihan Avatar asked Aug 12 '16 18:08

Cihan


2 Answers

A dictionary of this format -> { (int) key : (list) value }

d = {}  # Initialize empty dictionary.
d[0] = [1.0, 1.0, 1.0, 1.0] # Place key 0 in d, and map this array to it.
print d[0]
d[1] = [0.5, 1.0]
print d[1]
>>> [1.0, 1.0, 1.0, 1.0]
>>> [0.5, 1.0]
print d[0][0]  # std::cout <<vertexWeights[0][0];
>>> 1.0
like image 169
ospahiu Avatar answered Oct 09 '22 08:10

ospahiu


How about dictionary and lists like this:

>>> d = {0: [1.0, 1.0, 1.0, 1.0], 1: [0.5, 1.0]}
>>> d[0]
[1.0, 1.0, 1.0, 1.0]
>>> d[1]
[0.5, 1.0]
>>> 

The key can be integers and associated values can be stored as a list. Dictionary in Python is a hash map and the complexity is amortized O(1).

like image 36
Shubham Avatar answered Oct 09 '22 07:10

Shubham