Python 使用字符串搜索字典列表,并将其附加到另一个相同格式的列表中

Python 使用字符串搜索字典列表,并将其附加到另一个相同格式的列表中,python,python-3.x,string,list,dictionary,Python,Python 3.x,String,List,Dictionary,我有一张物品清单 array = [ {'Path': '/', 'UserName': 'sns-1', 'UserId': '123'}, {'Path': '/', 'UserName': 'user1', 'UserId': '456'}, {'Path': '/', 'UserName': 'user2', 'UserId': '789'}, {'Path': '/', 'UserName': 'sns-22', 'UserId': '123'},

我有一张物品清单

array = [

    {'Path': '/', 'UserName': 'sns-1', 'UserId': '123'}, 
    {'Path': '/', 'UserName': 'user1', 'UserId': '456'}, 
    {'Path': '/', 'UserName': 'user2', 'UserId': '789'},
    {'Path': '/', 'UserName': 'sns-22', 'UserId': '123'}, 
    {'Path': '/', 'UserName': 'sns-3344', 'UserId': '456'} 

]
我想搜索以sns开头的用户名,并将其分离到另一个列表中。有人能告诉我怎么做吗

预期产出:

array1 = [

    {'Path': '/', 'UserName': 'sns-1', 'UserId': '123'}, 
    {'Path': '/', 'UserName': 'sns-22', 'UserId': '123'}, 
    {'Path': '/', 'UserName': 'sns-3344', 'UserId': '456'} 
]

array2 = [

    {'Path': '/', 'UserName': 'user1', 'UserId': '456'}, 
    {'Path': '/', 'UserName': 'user2', 'UserId': '789'},

]

您可以这样做:

array = [

    {'Path': '/', 'UserName': 'sns-1', 'UserId': '123'}, 
    {'Path': '/', 'UserName': 'user1', 'UserId': '456'}, 
    {'Path': '/', 'UserName': 'user2', 'UserId': '789'},
    {'Path': '/', 'UserName': 'sns-22', 'UserId': '123'}, 
    {'Path': '/', 'UserName': 'sns-3344', 'UserId': '456'} 

]

array1 = [x for x in array if x['UserName'].startswith('sns')]
array2 = [x for x in array if not x['UserName'].startswith('sns')]
输出:

>>> array1
[{'Path': '/', 'UserName': 'sns-1', 'UserId': '123'},
 {'Path': '/', 'UserName': 'sns-22', 'UserId': '123'},
 {'Path': '/', 'UserName': 'sns-3344', 'UserId': '456'}]
>>> array2
[{'Path': '/', 'UserName': 'user1', 'UserId': '456'},
 {'Path': '/', 'UserName': 'user2', 'UserId': '789'}]

您可以这样做:

array = [

    {'Path': '/', 'UserName': 'sns-1', 'UserId': '123'}, 
    {'Path': '/', 'UserName': 'user1', 'UserId': '456'}, 
    {'Path': '/', 'UserName': 'user2', 'UserId': '789'},
    {'Path': '/', 'UserName': 'sns-22', 'UserId': '123'}, 
    {'Path': '/', 'UserName': 'sns-3344', 'UserId': '456'} 

]

array1 = [x for x in array if x['UserName'].startswith('sns')]
array2 = [x for x in array if not x['UserName'].startswith('sns')]
输出:

>>> array1
[{'Path': '/', 'UserName': 'sns-1', 'UserId': '123'},
 {'Path': '/', 'UserName': 'sns-22', 'UserId': '123'},
 {'Path': '/', 'UserName': 'sns-3344', 'UserId': '456'}]
>>> array2
[{'Path': '/', 'UserName': 'user1', 'UserId': '456'},
 {'Path': '/', 'UserName': 'user2', 'UserId': '789'}]

它不是python式的,仍然需要弄清楚逻辑,或者您可以参考其他答案:

array1=[]
array2=[]
for elem in array:
    if elem['UserName'].startswith('sns'):
        print(array1.append(elem))
    else:
        print(array2.append(elem))

它不是python式的,仍然需要弄清楚逻辑,或者您可以参考其他答案:

array1=[]
array2=[]
for elem in array:
    if elem['UserName'].startswith('sns'):
        print(array1.append(elem))
    else:
        print(array2.append(elem))
你可以这样做:

array1=[]
array2=[]
对于范围内的i(len(数组)):
如果数组[i]['UserName'].startswith('sns'):
array1.append(数组[i])
其他:
array2.append(数组[i])
打印('array1',array1)
打印('array2',array2)
您可以这样做:

array1=[]
array2=[]
对于范围内的i(len(数组)):
如果数组[i]['UserName'].startswith('sns'):
array1.append(数组[i])
其他:
array2.append(数组[i])
打印('array1',array1)
打印('array2',array2)
检查此代码

array1 = []
array2 = []
for dictionary in array:
    if 'sns' in dictionary['UserName']:
        array1.append(dictionary)
    else:
        array2.append(dictionary)
检查此代码

array1 = []
array2 = []
for dictionary in array:
    if 'sns' in dictionary['UserName']:
        array1.append(dictionary)
    else:
        array2.append(dictionary)

他需要用户名以“sns”开头,您的代码打印用户名包含“sns”,无论其位置如何他需要用户名以“sns”开头,您的代码打印用户名包含“sns”,无论其位置如何用户名应以“sns”开头,但您的代码也将采用用户名,用户名之间包含“sns”。比如-'User1-sns'用户名应该以'sns'开头,但是您的代码也将采用用户名,用户名之间包含'sns'。比如-‘User1 sns’的“startswith”很好用,谢谢你peeps“startswith”很好用,谢谢你peeps