私はこのリストを持っています:
n = ['FAKE0.0.1.8', '10.2.2.22', '10.2.182.10', '10.2.20.5', '10.2.94.135', '10.2.110.1', '10.2.94.73', '10.2.20.1', '10.2.94.38', '10.2.94.37', '10.2.7.121']
そしてこの辞書:
i = {'10.2.94.38': {'area': '0.0.1.8'}}
ご覧のとおり、リスト内には辞書の有効なキーである項目が1つだけあります10.2.94.38
。
私が以下を行うならば、私は内側の辞書を得ることができます{'area':'0.0.1.8'}
:
>>> [i.get(x,'NA') for x in n]
['NA', 'NA', 'NA', 'NA', 'NA', 'NA', 'NA', 'NA', {'area': '0.0.1.8'}, 'NA', 'NA']
次のことを行うと、0.0.1.8
いつものように値を取得できます。
>>> i[n[8]]['area']
'0.0.1.8'
私が直面している問題は、私が究極の価値に到達できないことです0.0.1.8
。私は成功せずに以下を試しました:
>>> [i.get(x['area'],'NA') for x in n]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in <listcomp>
TypeError: string indices must be integers
どうすればいいですか?私が達成したい最終結果は次のとおりです。
['NA', 'NA', 'NA', 'NA', 'NA', 'NA', 'NA', 'NA', '0.0.1.8', 'NA', 'NA']
ありがとう!
ルーカス
1つの方法はtry
/を使用することexcept
です:
n = ['FAKE0.0.1.8', '10.2.2.22', '10.2.182.10', '10.2.20.5', '10.2.94.135',
'10.2.110.1', '10.2.94.73', '10.2.20.1', '10.2.94.38', '10.2.94.37', '10.2.7.121']
i = {'10.2.94.38': {'area': '0.0.1.8'}}
def try_get_all(i, n):
for j in n:
try:
yield i[j]['area']
except KeyError:
yield 'NA'
res = list(try_get_all(i, n))
# ['NA', 'NA', 'NA', 'NA', 'NA', 'NA', 'NA', 'NA', '0.0.1.8', 'NA', 'NA']
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加