Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 检查列表中是否存在字符串_Python - Fatal编程技术网

Python 检查列表中是否存在字符串

Python 检查列表中是否存在字符串,python,Python,我有一份清单: test = [{u'TopicArn': u'arn:aws:sns:us-east-1:700257:test1'}, {u'TopicArn': u'arn:aws:sns:us-east-1:700257:test2'}, {u'TopicArn': u'arn:aws:sns:us-east-1:700257:test3'}, {u'TopicArn': u'arn:aws:sns:us-east-1:700257:test4'}] 我想检查上面的列表中是

我有一份清单:

test = [{u'TopicArn': u'arn:aws:sns:us-east-1:700257:test1'},
  {u'TopicArn': u'arn:aws:sns:us-east-1:700257:test2'},
  {u'TopicArn': u'arn:aws:sns:us-east-1:700257:test3'},
  {u'TopicArn': u'arn:aws:sns:us-east-1:700257:test4'}]
我想检查上面的列表中是否存在字符串

string = "{u'TopicArn': u'arn:aws:sns:us-east-1:700257:test4'}"

if string in test:
   print("string exist in list")
else:
   print("string dont exist in list")
我的变量字符串是一个存在于列表中的字符串,但我收到消息“字符串不存在于列表中”


你明白为什么吗?

因为你在列表中有
命令。
您必须遍历列表并检查字符串是否在dict值中

string = "arn:aws:sns:us-east-1:700257:test4"

for d in test:
    if string in d.values():
       print("string exist in list")
    else:
       print("string dont exist in list")

如果您在测试中询问
如果字符串
,它将检查
列表中的一个元素中的字符串
“arn:aws:sns:us-east-1:700257:test4”
。那不是真的。

因为列表中有
dicts
。 您必须遍历列表并检查字符串是否在dict值中

string = "arn:aws:sns:us-east-1:700257:test4"

for d in test:
    if string in d.values():
       print("string exist in list")
    else:
       print("string dont exist in list")

如果您在测试中询问
如果字符串
,它将检查
列表中的一个元素中的字符串
“arn:aws:sns:us-east-1:700257:test4”
。这不是真的。

以下是测试中的四件事:

{u'TopicArn': u'arn:aws:sns:us-east-1:700257:test1'}
{u'TopicArn': u'arn:aws:sns:us-east-1:700257:test2'}
{u'TopicArn': u'arn:aws:sns:us-east-1:700257:test3'}
{u'TopicArn': u'arn:aws:sns:us-east-1:700257:test4'}
>>> string = "arn:aws:sns:us-east-1:700257:test4"
>>> string in test
False
>>> any(string in d.values() for d in test)
True
“arn:aws:sns:us-east-1:700257:test4”
不是其中之一,而且比较中的
看起来并不深入

您可能想做的事情如下:

if any(string in d.values() for d in test):
检查字符串是否在
测试中某个词典的值中:

{u'TopicArn': u'arn:aws:sns:us-east-1:700257:test1'}
{u'TopicArn': u'arn:aws:sns:us-east-1:700257:test2'}
{u'TopicArn': u'arn:aws:sns:us-east-1:700257:test3'}
{u'TopicArn': u'arn:aws:sns:us-east-1:700257:test4'}
>>> string = "arn:aws:sns:us-east-1:700257:test4"
>>> string in test
False
>>> any(string in d.values() for d in test)
True

以下是测试中的四件事:

{u'TopicArn': u'arn:aws:sns:us-east-1:700257:test1'}
{u'TopicArn': u'arn:aws:sns:us-east-1:700257:test2'}
{u'TopicArn': u'arn:aws:sns:us-east-1:700257:test3'}
{u'TopicArn': u'arn:aws:sns:us-east-1:700257:test4'}
>>> string = "arn:aws:sns:us-east-1:700257:test4"
>>> string in test
False
>>> any(string in d.values() for d in test)
True
“arn:aws:sns:us-east-1:700257:test4”
不是其中之一,而且比较中的
看起来并不深入

您可能想做的事情如下:

if any(string in d.values() for d in test):
检查字符串是否在
测试中某个词典的值中:

{u'TopicArn': u'arn:aws:sns:us-east-1:700257:test1'}
{u'TopicArn': u'arn:aws:sns:us-east-1:700257:test2'}
{u'TopicArn': u'arn:aws:sns:us-east-1:700257:test3'}
{u'TopicArn': u'arn:aws:sns:us-east-1:700257:test4'}
>>> string = "arn:aws:sns:us-east-1:700257:test4"
>>> string in test
False
>>> any(string in d.values() for d in test)
True

Python的
in
函数不是这样工作的。您需要首先将
测试转换为一个列表或一组字符串:

test2 = set([x['TopicArn'] for x in test])

Python的
in
函数不是这样工作的。您需要首先将
测试转换为一个列表或一组字符串:

test2 = set([x['TopicArn'] for x in test])

如果有词典列表,请尝试以下操作:

found = False
for adict in test:
    if string in adict.values():
       found = True
if not found:
    print("string dont exist in list")
else:
    print("string in list")
似乎您真正想知道的是字符串是否是列表中某个字典中的值之一

给出了一个更具python风格的单行线作为评论:

if any(d['TopicArn'] == string for d in test):
    print("string in list")

如果有词典列表,请尝试以下操作:

found = False
for adict in test:
    if string in adict.values():
       found = True
if not found:
    print("string dont exist in list")
else:
    print("string in list")
似乎您真正想知道的是字符串是否是列表中某个字典中的值之一

给出了一个更具python风格的单行线作为评论:

if any(d['TopicArn'] == string for d in test):
    print("string in list")

使用列表理解并比较模式匹配的值

 test = [{u'TopicArn': u'arn:aws:sns:us-east-1:700257:test1'},
  {u'TopicArn': u'arn:aws:sns:us-east-1:700257:test2'},
  {u'TopicArn': u'arn:aws:sns:us-east-1:700257:test3'},
  {u'TopicArn': u'arn:aws:sns:us-east-1:700257:test4'}]

 string = 'arn:aws:sns:us-east-1:700257:test4'

 result=list(d for d in test if string in d.values())
 print(result)
输出:

 [{'TopicArn': 'arn:aws:sns:us-east-1:700257:test4'}]

使用列表理解并比较模式匹配的值

 test = [{u'TopicArn': u'arn:aws:sns:us-east-1:700257:test1'},
  {u'TopicArn': u'arn:aws:sns:us-east-1:700257:test2'},
  {u'TopicArn': u'arn:aws:sns:us-east-1:700257:test3'},
  {u'TopicArn': u'arn:aws:sns:us-east-1:700257:test4'}]

 string = 'arn:aws:sns:us-east-1:700257:test4'

 result=list(d for d in test if string in d.values())
 print(result)
输出:

 [{'TopicArn': 'arn:aws:sns:us-east-1:700257:test4'}]


在test.values()中执行
if字符串操作:
如果要查找
字符串
值。从现在开始,您迭代字典的键而不是值。
如果有(d['TopicArn']='arn:aws:sns:us-east-1:700257:test4'表示测试中的d):
为此,我将使用元组列表而不是dict列表。test包含一个字典列表,其中包含键/值对do
如果test.values()中的字符串:
如果要查找
字符串
值。目前为止,您正在迭代字典的键而不是值。
如果有(d['TopicArn']=='arn:aws:sns:us-east-1:700257:test4'表示测试中的d):
为此,我将使用元组列表而不是dict列表。test包含一个带有键/值对的字典列表谢谢您的回答。我用你的提示更新了我的问题,但问题还在继续!我没有投反对票,但对于偶然的观察者来说,这个字符串在
test
中。您没有解释“不是其中之一”的含义。@techman您现在正在查找表示词典的字符串,但
test
包含词典,而不是它们的字符串表示形式。如果您删除导出的
,它应该可以工作。@dimo414是的,同意,这就是为什么我添加了解释的最后一部分。谢谢您的回答。我用你的提示更新了我的问题,但问题还在继续!我没有投反对票,但对于偶然的观察者来说,这个字符串在
test
中。您没有解释“不是其中之一”的含义。@techman您现在正在查找表示词典的字符串,但
test
包含词典,而不是它们的字符串表示形式。如果您删除导出的
,它应该会起作用。@dimo414是的,同意,这就是为什么我添加了解释的最后部分。这将打印出4个答案。这将打印出4个答案。谢谢您的回答。你的解决方案很有效!如果x['TopicArn']==stringvalue,您需要添加。谢谢您的回答。你的解决方案很有效!如果x['TopicArn']==stringvalue,则需要添加