LabVIEW array of Cluster and Python List of Dictionary

A presentation on my search for a Python equivalent to Cluster and Array of Cluster.

What was used

  • LabVIEW® 2019 a National Instrument product
  • Python 3.7
  • Anaconda, Spyder IDE
  • PowerPoint a Microsoft product

I was focusing on finding a why to use dot notation for the element in dictionary while in the Spyder IDE  so when i type “.” i can see the elements that can be used.

I tried two method  to show some possibility  and by no means the only solutions.

Method one get me the .dot notation     (Classes uses dot notation that will show drop-down for selection inside the IDE).

Method two just a expansion into classes for easier dictionary construction.

After the presentation i will add the python code and console output

LCAnPLD_Slide1LCAnPLD_Slide2LCAnPLD_Slide3LCAnPLD_Slide4LCAnPLD_Slide5LCAnPLD_Slide6LCAnPLD_Slide7LCAnPLD_Slide8LCAnPLD_Slide9LCAnPLD_Slide10LCAnPLD_Slide11LCAnPLD_Slide12LCAnPLD_Slide13LCAnPLD_Slide14

#

# -*- coding: utf-8 -*-
"""
Created on Mon Oct 28 18:15:47 2019

@author: aleja
"""
print("regular dictionary with defaults\n")
cluster= {"String":"Null","Number":0,"Boolean":False}
print (cluster)
print (cluster["Boolean"])
print (cluster["String"])
print (cluster["Number"])

#want something like in Lv cluster.Boolean  so when i type. a list of element appear for selection
print("\n Method1 using class just for the . notation")
#class uses the dot notation for elements forcing datatype  dot give me help from the editor for choices
class cluster2Elem():
    String="String"
    Number="Number"
    Boolean="Boolean"

c2elem=cluster2Elem()   #similar to creating a control from a control datatype in LV

def cluster2(cluster={c2elem.String:"Null",c2elem.Number:0,c2elem.Boolean:False}):
    return(cluster)

print(cluster2())  #return the default values
print(cluster2()["String"])

#array of clusters (labVIEW naming)
List2=[]
List2.append(cluster2({c2elem.String:"Alfred",c2elem.Number:10,c2elem.Boolean:True}))
print (List2)
print (List2[0][c2elem.String])

print (List2[0][c2elem.String])
print (List2[0][c2elem.Boolean])
print (List2[0][c2elem.Number])
print("\n")

List2[0][c2elem.Number]=11

print (List2[0][c2elem.String])
print (List2[0][c2elem.Boolean])
print (List2[0][c2elem.Number])
print (List2)
print("\n")

List2.append(cluster2({c2elem.String:"Fred",c2elem.Number:5,c2elem.Boolean:False}))
print (List2)
List2.append(cluster2({c2elem.Number:20,c2elem.String:"Sally",c2elem.Boolean:False})) #check if order will hurt
print (List2)
print("\n")

print("number of cluster in array/List= ",len(List2))
list=[]
for list in List2:
    print(list[c2elem.String])
#look ok because of key,value , this is close to what i want
#===========================================================================
#let look a class a bit more
print("\n ====Method2 using class just for the . notation and easier dict build setget s,n,b====")
print("\n ====first create the class and properties and methods==")

class cluster3Elem():
   def __init__(self):
        self.String="String"
        self.Number="Number"
        self.Boolean="Boolean"

   def setget(self,String="Null",Number=0,Boolean=False):
       self.valStr=String #need to do this so later get will have the -self- last values used
       self.valNum=Number
       self.valBool=Boolean
       return ({self.String:String,self.Number:Number,self.Boolean:Boolean})

   def get(self):
       return ({self.String:self.valStr,self.Number:self.valNum,self.Boolean:self.valBool})

print("\n==")

cluster3=cluster3Elem()
List3=[]
List3.append(cluster3.setget("Sally",3,False))  # more like the  cluster bundle
List3.append(cluster3.setget("Fred",7,False))  # more like the  cluster bundle

print("\n")

print(List3)
print("\n ====Get last value entered")
print(cluster3.get()) #get last value used by this cluster
print("\n")
print("\n ====Change two item from the last dictionary")
cluster3.valStr="Alfred"
cluster3.valBool=True
print(cluster3.get()[cluster3.String])
print(cluster3.get()[cluster3.Boolean])

print("\n ====Add dictionary changes to list")
List3.append(cluster3.get())
print(List3)
print("\n")

print("number of cluster in array/List= ",len(List3))
list=[]
for list in List3:
    print(list[cluster3.String])

#

Console Output in Spyder

#


regular d<span id="mce_SELREST_start" style="overflow:hidden;line-height:0;">&#65279;</span>ictionary with defaults

{'String': 'Null', 'Number': 0, 'Boolean': False}
False
Null
0

 Method1 using class just for the . notation
{'String': 'Null', 'Number': 0, 'Boolean': False}
Null
[{'String': 'Alfred', 'Number': 10, 'Boolean': True}]
Alfred
Alfred
True
10

Alfred
True
11
[{'String': 'Alfred', 'Number': 11, 'Boolean': True}]

[{'String': 'Alfred', 'Number': 11, 'Boolean': True}, {'String': 'Fred', 'Number': 5, 'Boolean': False}]
[{'String': 'Alfred', 'Number': 11, 'Boolean': True}, {'String': 'Fred', 'Number': 5, 'Boolean': False}, {'Number': 20, 'String': 'Sally', 'Boolean': False}]

number of cluster in array/List=  3
Alfred
Fred
Sally

 ====Method2 using class just for the . notation and easier dict build setget s,n,b====

 ====first create the class and properties and methods==

==

[{'String': 'Sally', 'Number': 3, 'Boolean': False}, {'String': 'Fred', 'Number': 7, 'Boolean': False}]

 ====Get last value entered
{'String': 'Fred', 'Number': 7, 'Boolean': False}

 ====Change two item from the last dictionary
Alfred
True

 ====Add dictionary changes to list
[{'String': 'Sally', 'Number': 3, 'Boolean': False}, {'String': 'Fred', 'Number': 7, 'Boolean': False}, {'String': 'Alfred', 'Number': 7, 'Boolean': True}]

number of cluster in array/List=  3
Sally
Fred
Alfred

#

About LV_TS_Test_Engineer_3000_VI

Automated Test Equipment Software
This entry was posted in Test Sector and tagged , , , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s