-4

I have a list of lists like so:

a = [1, 2, 3]
b = [2, 3, 4]
c = []
append blah blah blah

I currently am doing:

for x in c:
   print(x)

and it is outputing [1, 2, 3]. How would i get it to output 'a' instead?

jgree157
  • 33
  • 5

3 Answers3

2

There are a few ways to achieve what you want. The first suggestions require using a different data structure. The last suggestion is for demonstration purposes ONLY and should NEVER BE USED.

Option 1. Store you data in a dictionary:

my_data = {"a": [1, 2, 3], "b": [2, 3, 4]}
my_data["c"] = [my_data.get('a'), my_data.get('b')]

Then you would simply iterate over the key, value pairs.

>>> for name, value in my_data.items():
...     print name, value
...
a [1, 2, 3]
c [[1, 2, 3], [2, 3, 4]]
b [2, 3, 4]

The dictionary has no useful ordering, so if you wanted it ordered you could use an OrderedDict, or another data structure like a list of tuples.

Or you could sort them before you iterate:

for name, value in sorted(my_data.items()):
    print name, value

You could also create the dictionary after the variables are assigned

>>> a = [1, 2, 3]
>>> b = [2, 3, 4]
>>> c = [a, b]
>>> my_data = {"a": a, "b": b, "c": c}

Option Terrible. The very hackish way to do this (and only for demonstration purposes) is to use locals()

>>> a = [1, 2, 3]
>>> b = [2, 3, 4]
>>> c = [a, b]
>>> for name, value in locals().items():
...     if len(name) != 1:
...         continue
...     print name, value
...
a [1, 2, 3]
c [[1, 2, 3], [2, 3, 4]]
b [2, 3, 4]
sberry
  • 128,281
  • 18
  • 138
  • 165
0

If you want to print the variable name see Can I print original variable's name in Python? and How can you print a variable name in python?

However the answers there say you should not do it.

You are telling it to print the complete contents of c which contains the objects a and b which are indeed

[1, 2, 3]
[2, 3, 4]

You are saying that you want to print the string 'a'

To do that you would have to define

c = ['a', 'b']

which is completely different.

Community
  • 1
  • 1
sabbahillel
  • 4,357
  • 1
  • 19
  • 36
0

You are printing a. Your list c is actually

C = [[1,2,3], [2,3,4]]

If you modify a before printing c. The new values in a will be shown. As python passes by reference and c contains a reference to a

Jase Rieger
  • 611
  • 3
  • 8