假设我有123-0-1
,我想检查列表中是否存在此值。以下是我的清单:
df = [
{'mpls': '123-0-1', 'source': '192.168.10.10', 'destination' : '12.168.100.10'},
{'mpls': '123-0-1', 'source': '192.168.10.15', 'destination': '10.12.129.200'}
]
在SQL中我会使用:
select mpls, source from df where source = 192.168.10.10
从列表中,我想从源123-0-1
中提取mpls 192.168.10.10
,以便我可以获得正确的目的地12.168.100.10
。
答案 0 :(得分:2)
df
不是数据框。这是一个词典列表。
因此,您唯一的选择是循环和if
条件:
for connection in df:
if connection['source'] == '192.168.10.10':
print(connection['mpls'])
print(connection['destination'])
# do whatever with connection. Can also break if it is guaranteed to be unique.
但是,如果df
是数据框,则可以使用pandas索引语法:
relevant_rows = df[df['source'] == '192.168.10.10']
relevant_rows
将是一个新的数据框,其行是source
等于'192.168.10.10'
的行。
import pandas as pd
data = [
{'mpls': '123-0-1', 'source': '192.168.10.10', 'destination' : '12.168.100.10'},
{'mpls': '123-0-1', 'source': '192.168.10.15', 'destination': '10.12.129.200'}
]
df = pd.DataFrame(data)
print(df)
# destination mpls source
# 0 12.168.100.10 123-0-1 192.168.10.10
# 1 10.12.129.200 123-0-1 192.168.10.15
relevant_rows = df[df['source'] == '192.168.10.10']
print(relevant_rows)
# destination mpls source
# 0 12.168.100.10 123-0-1 192.168.10.10
答案 1 :(得分:1)
为什么不制作它的数据框?
df = pd.DataFrame(df)
df[df['source'] == '192.168.10.10']
答案 2 :(得分:0)
使用列表理解时,这是一个可能的解决方案,因为您正在使用列表:
[(x['mpls'], x['destination']) for x in df if x['source'] == '192.168.10.10']
根据mpls
返回包含destination
和source
的元组:
[('123-0-1', '12.168.100.10')]
答案 3 :(得分:0)
其他答案都很好;只想展示如何使用 <style name="labelcolor" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Hint color and label color in FALSE state -->
<item name="android:textColorHint">#868686</item>
<item name="android:textSize">16sp</item>
<item name="android:paddingTop">5sp</item>
<!-- Label color in TRUE state and bar color FALSE and TRUE State -->
<item name="colorAccent">#0ea3ff</item>
<item name="colorControlNormal">#0ea3ffr</item>
<item name="colorControlActivated">#0ea3ff</item>
</style>
:
next
请注意,这会返回仅符合条件的第一个 df = [{'mpls': '123-0-1', 'source': '192.168.10.10', 'destination' : '12.168.100.10'}, {'mpls': '123-0-1', 'source': '192.168.10.15', 'destination': '10.12.129.200'}]
try:
target = next(x for x in df if x['source'] == '192.168.10.10')
except StopIteration:
print('Value not found!')
else:
print(target['mpls']) # -> 123-0-1
print(target['destination']) # -> 12.168.100.10
。根据您的dictionary
声明,您似乎想要全部。
答案 4 :(得分:0)
我们还可以使用filter
函数从列表中获取过滤数据。
filtered_list = filter((lambda x: x['source'] == '192.168.10.10'), df)