使用字符串定义具有元组的变量

2024-09-30 22:18:35 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我的问题看起来是新手,我很抱歉,但是在python(2.7)中,我遇到了一个障碍,那就是基于字符串为元组分配变量。你知道吗

在过去,我没有分配变量和使用字符串给它命名的问题(例如:rowId = '%sDays' %workoutMode)。但是在元组环境中,我遇到了一些问题。你知道吗

我想从数据库中提取三个不同的表,并对它们应用相同的代码。在本例中,我希望根据定义列表中的字符串提取数据并打印它。但是我在基于字符串分配变量时遇到了一个问题。这是我的密码:

def workoutCycle():
    catagories = 'Legs', 'Arms', 'Back'
    for catagory in catagories:
        conn = sqlite3.connect('workoutData.db')
        c = conn.cursor()
        c.execute ('SELECT round(%sDays, 1), round(%sDaysTotal, 1) FROM Profile_%s' %(catagory, catagory, catagory))
        originalData = c.fetchall()
        ('%sDays' %catagory, '%sDaysTotal' %catagory) = tuple(originalData[0])
        print originalData
        print '%sDays' %catagory
        print '%sDaysTotal' %catagory

此代码返回:

SyntaxError: invalid syntax

我试过不同的修改,但我运气不好。字符串/元组是否缺少特定的格式?你知道吗

*********编辑************

我好像不太清楚我想做什么。本质上,我试图创建一个循环来代替为每个类别编写代码。例如,我想打印与“Arms”相关的数据,代码如下:

def armCycle():
    conn = sqlite3.connect('workoutData.db')
    c = conn.cursor()
    c.execute ('SELECT round(ArmsDays, 1), round(ArmsDaysTotal, 1) FROM Profile_Arms')
    #originalData = c.fetchall()
    originalData = c.fetchall()
    (ArmsDays, ArmsDaysTotal) = tuple(originalData[0])
    print originalData
    print ArmsDays
    print ArmsDaysTotal

我试图创建一个比为每个类别创建一个函数更具动态性的代码。我肯定我走错了路。抱歉,我对编程还不熟悉。你知道吗


Tags: 数据字符串代码conn元组printarmsround
1条回答
网友
1楼 · 发布于 2024-09-30 22:18:35

看起来您想创建新的变量(ArmsDaysArmsDaysTotal),这些变量是基于包含值"Arms"的变量category命名的。最简单和常用的方法不是动态地创建单个变量,而是使用dict。你知道吗

c.execute ('SELECT round(%sDays, 1), round(%sDaysTotal, 1) FROM Profile_%s' %(category, category, category))
originalData = c.fetchall()

my_dynamic_data = {}

my_dynamic_data['%sDays' %category] = originalData[0][0]
my_dynamic_data['%sDaysTotal' %category] = originalData[0][1]

dict的键的构造原理与在select语句中构造列名的方式完全相同。然后,代替

print '%sDays' %category
print '%sDaysTotal' %category       

print my_dynamic_data['%sDays' %category]
print my_dynamic_data['%sDaysTotal' %category]       

您可以在Python中动态地创建新变量,但是如果您需要询问如何创建,您不应该这样做。你需要一个很好的理由来避免使用dict。你知道吗

相关问题 更多 >