Hướng dẫn create variables from list of strings python - tạo biến từ danh sách chuỗi python

Tôi là người mới đến Python, vì vậy tôi không biết nếu điều này là có thể. Tôi đang cố gắng tạo một danh sách các tên biến từ danh sách các chuỗi để sau đó tôi có thể gán các giá trị cho các biến mới được tạo.

Tôi đã thấy một câu hỏi tương tự khác, nhưng đã có một khoản phí các phím và giá trị.

Đây là mã của tôi:

def handy(self):
    a = raw_input('How many hands? ')
    for i in range(int(a)):
        h = "hand" + str(i+ 1)
            self.list_of_hands.append(h)
            # would like to create variable names from self.list_of_hands
            # something like "hand1 = self.do_something(i)"
            print h
    print self.list_of_hands

Đưa ra một số câu trả lời, tôi đang thêm nhận xét sau: Sau đó tôi sẽ gán các dicts cho từng biến. Vì vậy, tôi có thể tạo ra một từ điển từ điển?

Hướng dẫn create variables from list of strings python - tạo biến từ danh sách chuỗi python

Aran-Fey

36.6K11 Huy hiệu vàng96 Huy hiệu bạc141 Huy hiệu đồng11 gold badges96 silver badges141 bronze badges

Hỏi ngày 22 tháng 8 năm 2012 lúc 5:19Aug 22, 2012 at 5:19

DbweinsteindbweinsteinDBWeinstein

7.85530 Huy hiệu vàng68 Huy hiệu bạc110 Huy hiệu đồng30 gold badges68 silver badges110 bronze badges

3

Tại sao bạn không xây dựng một từ điển bằng cách sử dụng các chuỗi làm khóa?

>>> class test():
    def handy(self):
        a = raw_input('How many hands? ')
        d = { "hand" + str(i + 1) : self.do_something(i) for i in range(int(a)) }

        keys = d.keys()
        keys.sort()
        for x in keys:
            print x, '=', d[x]

    def do_something(self, i):
        return "something " + str(i)

>>> test().handy()
How many hands? 4
hand1 = something 0
hand2 = something 1
hand3 = something 2
hand4 = something 3

Chỉnh sửa: Bạn đã cập nhật câu hỏi để hỏi liệu bạn có thể lưu trữ từ điển như một giá trị trong từ điển không. Vâng, bạn có thể: You updated the question to ask if you can store a dictionary as a value in a dictionary. Yes, you can:

>>> d = { i : { j : str(i) + str(j) for j in range(5) } for i in range(5) }
>>> d[1][2]
'12'
>>> d[4][1]
'41'
>>> d[2]
{0: '20', 1: '21', 2: '22', 3: '23', 4: '24'}
>> d[5] = { 1 : '51' }
>> d[5][1]
'51'

Đã trả lời ngày 22 tháng 8 năm 2012 lúc 5:31Aug 22, 2012 at 5:31

Verdesmaraldverdesmaraldverdesmarald

11.4K2 Huy hiệu vàng41 Huy hiệu bạc59 Huy hiệu đồng2 gold badges41 silver badges59 bronze badges

Nếu bạn từng có nhiều biến chỉ khác nhau bởi một số ở cuối (

>>> d = { i : { j : str(i) + str(j) for j in range(5) } for i in range(5) }
>>> d[1][2]
'12'
>>> d[4][1]
'41'
>>> d[2]
{0: '20', 1: '21', 2: '22', 3: '23', 4: '24'}
>> d[5] = { 1 : '51' }
>> d[5][1]
'51'
0,
>>> d = { i : { j : str(i) + str(j) for j in range(5) } for i in range(5) }
>>> d[1][2]
'12'
>>> d[4][1]
'41'
>>> d[2]
{0: '20', 1: '21', 2: '22', 3: '23', 4: '24'}
>> d[5] = { 1 : '51' }
>> d[5][1]
'51'
1, v.v.), bạn cần một container.

Tôi nghĩ rằng một từ điển sẽ hoạt động tốt nhất:

self.hands = {}
self.hands[h] = self.do_something(i)

Bạn có thể truy cập các khóa riêng lẻ trong từ điển một cách dễ dàng:

self.hands['hand1']

Đã trả lời ngày 22 tháng 8 năm 2012 lúc 5:28Aug 22, 2012 at 5:28

2

h = "hand" + str(i+ 1)
vars()[h] = do_something(i)

Bây giờ bạn có thể gọi Hand1 để gọi DO_SOMETHER ()

Đã trả lời ngày 22 tháng 8 năm 2012 lúc 6:23Aug 22, 2012 at 6:23

Thavanthavanthavan

2.35323 huy hiệu bạc32 huy hiệu đồng23 silver badges32 bronze badges

  • Giới thiệu
  • Nhiệm vụ
  • Cách tiếp cận số 1 - Sử dụng Globals () và người dân địa phương ()
    • Ví dụ với Globals ()
    • Ví dụ với người dân địa phương ()
  • Cách tiếp cận #2 - Sử dụng Vars ()
    • Thí dụ
  • Cách tiếp cận 3 - Sử dụng từ điển
    • Thí dụ
  • Cách tiếp cận #3 - Sử dụng hàm EXEX ()
    • Thí dụ
  • Cách tiếp cận 3 - Sử dụng từ điển
    • Thí dụ
  • Cách tiếp cận 3 - Sử dụng từ điển

Giới thiệu

Thí dụ

Chia sẻ một số cách tiếp cận dưới đây có thể được sử dụng để chuyển đổi tự động các giá trị chuỗi thành tên biến.

Nhiệm vụ

Chuỗi giá trị,

x = "pikachu"

đến một biến

>>> d = { i : { j : str(i) + str(j) for j in range(5) } for i in range(5) }
>>> d[1][2]
'12'
>>> d[4][1]
'41'
>>> d[2]
{0: '20', 1: '21', 2: '22', 3: '23', 4: '24'}
>> d[5] = { 1 : '51' }
>> d[5][1]
'51'
2 để lưu trữ giá trị số nguyên (hoặc bất kỳ kiểu dữ liệu nào khác bạn muốn).

pikachu = 10

Cách tiếp cận số 1 - Sử dụng Globals () và người dân địa phương ()

Chúng ta có thể sử dụng

>>> d = { i : { j : str(i) + str(j) for j in range(5) } for i in range(5) }
>>> d[1][2]
'12'
>>> d[4][1]
'41'
>>> d[2]
{0: '20', 1: '21', 2: '22', 3: '23', 4: '24'}
>> d[5] = { 1 : '51' }
>> d[5][1]
'51'
3 và
>>> d = { i : { j : str(i) + str(j) for j in range(5) } for i in range(5) }
>>> d[1][2]
'12'
>>> d[4][1]
'41'
>>> d[2]
{0: '20', 1: '21', 2: '22', 3: '23', 4: '24'}
>> d[5] = { 1 : '51' }
>> d[5][1]
'51'
4 để chuyển đổi giá trị chuỗi thành một biến.

Ví dụ với Globals ()

x = "pikachu"
globals()[x] = 10
print(pikachu)

Outputis, is,

10

Ví dụ với người dân địa phương ()

Nếu chúng ta cần tạo biến trong phạm vi cục bộ, chúng ta sẽ sử dụng

>>> d = { i : { j : str(i) + str(j) for j in range(5) } for i in range(5) }
>>> d[1][2]
'12'
>>> d[4][1]
'41'
>>> d[2]
{0: '20', 1: '21', 2: '22', 3: '23', 4: '24'}
>> d[5] = { 1 : '51' }
>> d[5][1]
'51'
4 thay vì
>>> d = { i : { j : str(i) + str(j) for j in range(5) } for i in range(5) }
>>> d[1][2]
'12'
>>> d[4][1]
'41'
>>> d[2]
{0: '20', 1: '21', 2: '22', 3: '23', 4: '24'}
>> d[5] = { 1 : '51' }
>> d[5][1]
'51'
3, phần còn lại sẽ giống nhau.

Trong ví dụ dưới đây, chúng tôi sẽ tạo một biến bên trong một hàm. Vì bên trong hàm, nó sẽ là một biến có phạm vi cục bộ, chúng tôi sẽ sử dụng

>>> d = { i : { j : str(i) + str(j) for j in range(5) } for i in range(5) }
>>> d[1][2]
'12'
>>> d[4][1]
'41'
>>> d[2]
{0: '20', 1: '21', 2: '22', 3: '23', 4: '24'}
>> d[5] = { 1 : '51' }
>> d[5][1]
'51'
4.

>>> class test():
    def handy(self):
        a = raw_input('How many hands? ')
        d = { "hand" + str(i + 1) : self.do_something(i) for i in range(int(a)) }

        keys = d.keys()
        keys.sort()
        for x in keys:
            print x, '=', d[x]

    def do_something(self, i):
        return "something " + str(i)

>>> test().handy()
How many hands? 4
hand1 = something 0
hand2 = something 1
hand3 = something 2
hand4 = something 3
0

Đầu ra là,

>>> class test():
    def handy(self):
        a = raw_input('How many hands? ')
        d = { "hand" + str(i + 1) : self.do_something(i) for i in range(int(a)) }

        keys = d.keys()
        keys.sort()
        for x in keys:
            print x, '=', d[x]

    def do_something(self, i):
        return "something " + str(i)

>>> test().handy()
How many hands? 4
hand1 = something 0
hand2 = something 1
hand3 = something 2
hand4 = something 3
1

Cách tiếp cận #2 - Sử dụng Vars ()

>>> d = { i : { j : str(i) + str(j) for j in range(5) } for i in range(5) }
>>> d[1][2]
'12'
>>> d[4][1]
'41'
>>> d[2]
{0: '20', 1: '21', 2: '22', 3: '23', 4: '24'}
>> d[5] = { 1 : '51' }
>> d[5][1]
'51'
8 cung cấp quyền truy cập cấp thấp vào các biến được tạo bởi Python. Khi được sử dụng mà không có bất kỳ đối số nào, nó hoạt động giống như
>>> d = { i : { j : str(i) + str(j) for j in range(5) } for i in range(5) }
>>> d[1][2]
'12'
>>> d[4][1]
'41'
>>> d[2]
{0: '20', 1: '21', 2: '22', 3: '23', 4: '24'}
>> d[5] = { 1 : '51' }
>> d[5][1]
'51'
4. Phạm vi của & nbsp; ________ 30 & nbsp; sẽ giống hệt như phạm vi của & nbsp; ________ 31.

Thí dụ

>>> class test():
    def handy(self):
        a = raw_input('How many hands? ')
        d = { "hand" + str(i + 1) : self.do_something(i) for i in range(int(a)) }

        keys = d.keys()
        keys.sort()
        for x in keys:
            print x, '=', d[x]

    def do_something(self, i):
        return "something " + str(i)

>>> test().handy()
How many hands? 4
hand1 = something 0
hand2 = something 1
hand3 = something 2
hand4 = something 3
2

Đầu ra là,

>>> class test():
    def handy(self):
        a = raw_input('How many hands? ')
        d = { "hand" + str(i + 1) : self.do_something(i) for i in range(int(a)) }

        keys = d.keys()
        keys.sort()
        for x in keys:
            print x, '=', d[x]

    def do_something(self, i):
        return "something " + str(i)

>>> test().handy()
How many hands? 4
hand1 = something 0
hand2 = something 1
hand3 = something 2
hand4 = something 3
3

Cách tiếp cận #2 - Sử dụng Vars () – Using a dictionary

>>> d = { i : { j : str(i) + str(j) for j in range(5) } for i in range(5) }
>>> d[1][2]
'12'
>>> d[4][1]
'41'
>>> d[2]
{0: '20', 1: '21', 2: '22', 3: '23', 4: '24'}
>> d[5] = { 1 : '51' }
>> d[5][1]
'51'
8 cung cấp quyền truy cập cấp thấp vào các biến được tạo bởi Python. Khi được sử dụng mà không có bất kỳ đối số nào, nó hoạt động giống như
>>> d = { i : { j : str(i) + str(j) for j in range(5) } for i in range(5) }
>>> d[1][2]
'12'
>>> d[4][1]
'41'
>>> d[2]
{0: '20', 1: '21', 2: '22', 3: '23', 4: '24'}
>> d[5] = { 1 : '51' }
>> d[5][1]
'51'
4. Phạm vi của & nbsp; ________ 30 & nbsp; sẽ giống hệt như phạm vi của & nbsp; ________ 31.

Thí dụ

>>> class test():
    def handy(self):
        a = raw_input('How many hands? ')
        d = { "hand" + str(i + 1) : self.do_something(i) for i in range(int(a)) }

        keys = d.keys()
        keys.sort()
        for x in keys:
            print x, '=', d[x]

    def do_something(self, i):
        return "something " + str(i)

>>> test().handy()
How many hands? 4
hand1 = something 0
hand2 = something 1
hand3 = something 2
hand4 = something 3
4

Đầu ra là,

>>> class test():
    def handy(self):
        a = raw_input('How many hands? ')
        d = { "hand" + str(i + 1) : self.do_something(i) for i in range(int(a)) }

        keys = d.keys()
        keys.sort()
        for x in keys:
            print x, '=', d[x]

    def do_something(self, i):
        return "something " + str(i)

>>> test().handy()
How many hands? 4
hand1 = something 0
hand2 = something 1
hand3 = something 2
hand4 = something 3
3

Cách tiếp cận #2 - Sử dụng Vars ()

>>> d = { i : { j : str(i) + str(j) for j in range(5) } for i in range(5) }
>>> d[1][2]
'12'
>>> d[4][1]
'41'
>>> d[2]
{0: '20', 1: '21', 2: '22', 3: '23', 4: '24'}
>> d[5] = { 1 : '51' }
>> d[5][1]
'51'
8 cung cấp quyền truy cập cấp thấp vào các biến được tạo bởi Python. Khi được sử dụng mà không có bất kỳ đối số nào, nó hoạt động giống như
>>> d = { i : { j : str(i) + str(j) for j in range(5) } for i in range(5) }
>>> d[1][2]
'12'
>>> d[4][1]
'41'
>>> d[2]
{0: '20', 1: '21', 2: '22', 3: '23', 4: '24'}
>> d[5] = { 1 : '51' }
>> d[5][1]
'51'
4. Phạm vi của & nbsp; ________ 30 & nbsp; sẽ giống hệt như phạm vi của & nbsp; ________ 31.

Thí dụ

Cách tiếp cận 3 - Sử dụng từ điển

Cách được khuyến nghị nhất để làm điều này là sử dụng từ điển. Nó ít dễ bị lỗi và rủi ro bảo mật.method is not recommended as

self.hands = {}
self.hands[h] = self.do_something(i)
2 has some security risks. It is considered insecure because it allows the users to dynamically execute arbitrary Python code, which can be a big security loophole.

Cách tiếp cận #3 - Sử dụng hàm EXEX ()

Hàm EXEC có thể thực thi tự động mã của các chương trình Python. Mã có thể được truyền dưới dạng chuỗi hoặc mã đối tượng cho hàm này. Mã đối tượng được thực thi như là trong khi chuỗi được phân tích cú pháp đầu tiên và được kiểm tra bất kỳ lỗi cú pháp nào. Nếu không có lỗi cú pháp, chuỗi được thực thi dưới dạng mã Python.setattr() method.

>>> class test():
    def handy(self):
        a = raw_input('How many hands? ')
        d = { "hand" + str(i + 1) : self.do_something(i) for i in range(int(a)) }

        keys = d.keys()
        keys.sort()
        for x in keys:
            print x, '=', d[x]

    def do_something(self, i):
        return "something " + str(i)

>>> test().handy()
How many hands? 4
hand1 = something 0
hand2 = something 1
hand3 = something 2
hand4 = something 3
6

Phương pháp này không được khuyến nghị vì

self.hands = {}
self.hands[h] = self.do_something(i)
2 có một số rủi ro bảo mật. Nó được coi là không an toàn vì nó cho phép người dùng thực hiện tự động mã Python tùy ý, có thể là một lỗ hổng bảo mật lớn.

>>> class test():
    def handy(self):
        a = raw_input('How many hands? ')
        d = { "hand" + str(i + 1) : self.do_something(i) for i in range(int(a)) }

        keys = d.keys()
        keys.sort()
        for x in keys:
            print x, '=', d[x]

    def do_something(self, i):
        return "something " + str(i)

>>> test().handy()
How many hands? 4
hand1 = something 0
hand2 = something 1
hand3 = something 2
hand4 = something 3
7

Cách tiếp cận #4 - Sử dụng phương thức SetAttr ()

self.hands = {}
self.hands[h] = self.do_something(i)
4

Cách tiếp cận này sử dụng phương thức Python SetAttr ().

Phương thức

self.hands = {}
self.hands[h] = self.do_something(i)
3 đặt giá trị của thuộc tính được chỉ định của đối tượng được chỉ định.setattr() expects an object to be passed along with the value to generate/modify a new attribute.

Cú pháp đi như thế này -

Thí dụ

>>> class test():
    def handy(self):
        a = raw_input('How many hands? ')
        d = { "hand" + str(i + 1) : self.do_something(i) for i in range(int(a)) }

        keys = d.keys()
        keys.sort()
        for x in keys:
            print x, '=', d[x]

    def do_something(self, i):
        return "something " + str(i)

>>> test().handy()
How many hands? 4
hand1 = something 0
hand2 = something 1
hand3 = something 2
hand4 = something 3
8

Đầu ra là,

>>> class test():
    def handy(self):
        a = raw_input('How many hands? ')
        d = { "hand" + str(i + 1) : self.do_something(i) for i in range(int(a)) }

        keys = d.keys()
        keys.sort()
        for x in keys:
            print x, '=', d[x]

    def do_something(self, i):
        return "something " + str(i)

>>> test().handy()
How many hands? 4
hand1 = something 0
hand2 = something 1
hand3 = something 2
hand4 = something 3
9

Cách tiếp cận #2 - Sử dụng Vars ()

Bạn có thể biến một chuỗi thành một biến trong Python không?

Chuỗi vào tên biến trong python bằng hàm vars ().Thay vì sử dụng hàm locals () và toàn cầu () để chuyển đổi một chuỗi thành một tên biến trong python, chúng ta cũng có thể sử dụng hàm vars ().Hàm Vars (), khi được thực thi trong phạm vi toàn cầu, hoạt động giống như hàm Globals ().Instead of using the locals() and the globals() function to convert a string to a variable name in python, we can also use the vars() function. The vars() function, when executed in the global scope, behaves just like the globals() function.

Làm thế nào để bạn tạo một danh sách biến trong Python?

Tạo danh sách Python trong Python, một danh sách được tạo bằng cách đặt các phần tử bên trong dấu ngoặc vuông [], được phân tách bằng dấu phẩy.Một danh sách có thể có bất kỳ số lượng mục nào và chúng có thể thuộc các loại khác nhau (số nguyên, float, chuỗi, v.v.).placing elements inside square brackets [] , separated by commas. A list can have any number of items and they may be of different types (integer, float, string, etc.).

Làm thế nào để bạn gán một danh sách các giá trị cho một biến trong Python?

Để khởi tạo một danh sách trong Python gán một với dấu ngoặc vuông, khởi tạo với hàm danh sách (), tạo một danh sách trống với phép nhân hoặc sử dụng khả năng hiểu danh sách.Cách phổ biến nhất để khai báo một danh sách trong Python là sử dụng dấu ngoặc vuông.initialize with the list() function, create an empty list with multiplication, or use a list comprehension. The most common way to declare a list in Python is to use square brackets.

Một danh sách trong Python có thể chứa các biến không?

Vì một danh sách có thể chứa bất kỳ biến Python nào, nó thậm chí có thể chứa các danh sách khác.a list can contain any Python variables, it can even contain other lists.