簡體   English   中英

每個鍵具有多個值的Dict上的Python For循環

[英]Python For loop on Dict with multiple Values per Key

我想創建一個Dict,每個鍵具有2個值。 我不知道將每個鍵的值設為列表或另一個字典是否更好。 但是,最終,我只想遍歷每個鍵一次,然后在每個鍵的循環內,依次遍歷Value中的2個元素。

我有以下代碼:

dic = {'%serial_number%':['SERIAL_NUMBER :: (\w+)','number'],'%sw_version%':['SW_VERSION :: HR6400 ([\d\.\-]+)','ver']}
def match_regex(text):
    for k,v in dic.iteritems():
        for v1 in v:
            print(text,k,text,v1[0],v1[1])
match_regex(df.value)

輸出以下內容:

(Column<value>, '%sw_version%', Column<value>, 'S', 'W')
(Column<value>, '%sw_version%', Column<value>, 'v', 'e')
(Column<value>, '%serial_number%', Column<value>, 'S', 'E')
(Column<value>, '%serial_number%', Column<value>, 'n', 'u')

我會喜歡的輸出看起來像這樣:

(Column<value>, '%serial_number%', Column<value>, 'SERIAL_NUMBER :: (\w+)', 'number')
(Column<value>, '%sw_version%', Column<value>, 'SW_VERSION :: HR6400 iDirect ([\d\.\-]+)', 'ver')

我正在使用PySpark,但這沒關系,它是Python 2.7。 該功能必須是通用的,因此我只想按索引而不是字符串內容來引用它。

無需循環即可顯示每個項目的價值。

v只是一個列表,它是鍵k的值。 v[0]是值的第一項,而v[1]是第二項。

dic = {'%serial_number%':['SERIAL_NUMBER :: (\w+)','number'],'%sw_version%':['SW_VERSION :: HR6400 ([\d\.\-]+)','ver']}

def match_regex(text):
    for k, v in dic.iteritems():
        print(text,k,text,v[0],v[1])

match_regex(df.value)

# (Column<value>, '%serial_number%', Column<value>, 'SERIAL_NUMBER :: (\w+)', 'number') 
# (Column<value>, '%sw_version%', Column<value>, 'SW_VERSION :: HR6400 iDirect ([\d\.\-]+)', 'ver')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM