[英]Print dictionary values with list DB using Python
我有一個這樣的值字典:
indicator_keys = {
'i2': 'bla bla',
'i4': 'bla bla bla',
'i5': 'bla bla bla bla',
'i6': 'bla bla bla bla bla'
}
我有一個這樣的列表:
a = ['i2','i4','i5','i6','i15']
b = ['i6','i3','i10','i6','i15']
我想運行一個循環,它將通過字典 go 並匹配如果我的列表中的項目與打印正確值的鍵之一匹配,但是即使只有 1 個匹配項,我嘗試的每個循環都會打印與長度相同的句子整個列表(例如,如果只有i2
匹配,由於 For 循環,他將打印該值 5 次)這是我到目前為止的代碼:
for index, key in enumerate(indicator_keys):
for i in a:
if str(i) in indicator_keys:
print(indicator_keys[str(i)])
for s in b:
if str(s) in indicator_keys:
print(indicator_keys[str(s)])
試試這個會工作
for d in indicator_keys:
if d in a or d in b:
print(d, indicator_keys[d])
當您還使用in
運算符時,您不需要內部for
循環。 添加額外的print
可能有助於弄清楚發生了什么。 您的代碼實際上是迭代a
和b
並從dict
中為a
和b
的每個元素打印相應的值。 它執行的次數與dict
中的鍵數一樣多。
In [1]: indicator_keys = {'i2': 'bla bla',
...: 'i4': 'bla bla bla',
...: 'i5': 'bla bla bla bla',
...: 'i6': 'bla bla bla bla bla'}
In [2]: a = ['i2','i4','i5','i6','i15']
...: b = ['i6','i3','i10','i6','i15']
In [3]: for index, key in enumerate(indicator_keys):
...: print("--- key: {} ---".format(key))
...: for i in a:
...: if i in indicator_keys:
...: print(i, indicator_keys[i])
...: for s in b:
...: if s in indicator_keys:
...: print(s, indicator_keys[s])
...:
--- key: i2 ---
i2 bla bla
i4 bla bla bla
i5 bla bla bla bla
i6 bla bla bla bla bla
i6 bla bla bla bla bla
i6 bla bla bla bla bla
--- key: i4 ---
i2 bla bla
i4 bla bla bla
i5 bla bla bla bla
i6 bla bla bla bla bla
i6 bla bla bla bla bla
i6 bla bla bla bla bla
--- key: i5 ---
i2 bla bla
i4 bla bla bla
i5 bla bla bla bla
i6 bla bla bla bla bla
i6 bla bla bla bla bla
i6 bla bla bla bla bla
--- key: i6 ---
i2 bla bla
i4 bla bla bla
i5 bla bla bla bla
i6 bla bla bla bla bla
i6 bla bla bla bla bla
i6 bla bla bla bla bla
擺脫內部for
循環應該使其按預期工作:
In [4]: for key in indicator_keys:
...: if key in a or key in b:
...: print(key, indicator_keys[key])
...:
i2 bla bla
i4 bla bla bla
i5 bla bla bla bla
i6 bla bla bla bla bla
如果a
和b
中有很多元素,將它們轉換為set
可能是有意義的。
用列表理解簡化:
keys = [item for item in indicator_keys if (item in a) or (item in b)]
print(keys)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.