[英]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.