[英]Python 3: for loop syntax with dictionary
以下代碼段有效:
param = {}
for nround_counter in [1,2,3]:
{
print(nround_counter)
#param = {'objective' : 'multi:softmax'}
}
但是以下不是:
param = {}
for nround_counter in [1,2,3]:
{
print(nround_counter)
param = {'objective' : 'multi:softmax'}
}
給出的錯誤是無效的語法。 我是Python的新手,請尋求調試上述內容的幫助。
謝謝。
諸如循環,函數,類之類的代碼體未在Python中用大括號括起來。 縮進是決定代碼結構的因素。
for nround_counter in [1, 2, 3]:
print(nround_counter)
param = {'object' : 'multi:softmax'}
您在這里混淆了許多不同的問題。
這是您的第一個示例,使用更常規地用於Python的空白呈現:
#!python3
param = {}
for nround_counter in [1,2,3]:
{ print(nround_counter) }
請注意,這是對一系列語句的迭代,該語句(無用且令人困惑)被編碼為集合文字構造函數表達式,並因其副作用而被調用(調用print函數)。 它不會修改任何狀態,但會在整個循環的每次迭代中將其評估為一組,其中將None
單例作為唯一元素。
這不是特殊的語法。 這只是Python的設置文字構造語法的一種難以理解的用法。
還完全不清楚您要完成什么。 遍歷一個循環不斷將param
連續綁定到相同文字字典內容的列表是沒有意義的。
也許您想建立某種桌子?
param = dict()
for n in range(1,4):
print(n)
param['objective%s'%n] = 'multi:softmax'
... 或類似的東西。 注意,我使用dict()
而不是文字{}
初始化param
,因為我認為它更簡潔,更清晰(如果稍微冗長一些)。 同樣,我使用的是range(1,4)
而不是您的文字列表,這再次是因為它更干凈。 我在此循環主體中所做的事情很愚蠢,但這只是您可以做的一個例子。
請注意,每次通過循環時,我都會生成一個唯一鍵(一個常量字符串文字,其中包含迭代器變量的字符串表示形式的內插值)。 人們通常希望這些值也可以以某種方式動態地計算或推導。 但是我不怎么想,因為沒有想到明確的教學示例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.