检查列表中是否存在值

时间:2017-11-13 09:48:41

标签: python

假设我有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

5 个答案:

答案 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返回包含destinationsource的元组:

[('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)