A list of lists is a good idea.
You are essentially doing it right.
EDIT: Except you need to add another 'add [Create New List] to [WeaponList]' after the Sword comment. You need to add a new list to WeaponList for each weapon you are making.
So if you wanted to get the power of a sword, you would do something like;
get the value of item #[1] of [get the value of item #[1] from [WeaponList]].
Another thing you can do is when the item is equipped on the character, you only need to keep track of the weapon number, so you character's 'equip' variable would be '1' for a sword, so you could do this...
get the value of item#[1] of [get the value of item #[equip] from [WeaponList]]
which will always give you the power of the equipped weapon as long as you set 'equip' right.
I'd LOVE to be able to create 'custom objects' where you can assign attributes kind of like you do with actors and behaviours, without having to code them up each time. It would be easier to use them in block arrays, and you could assign them 'types' like you do with actors, so you'd be able to do "If [object] is of type [type]"
Call them objects, or props or whatever, it would make stuff like this SO MUCH EASIER and doesn't seem to far out of the existing framework. ('Maps' aka Dictionaries would accomplish a similar role, though, I think.)