我有一本包含 2 個串列 A 和 B 的字典。請參閱示例。
串列 A 和 B 包含多個字串,其中每個字串包含以逗號分隔的數字。
我的問題是,如何將串列 A 中每個字串的出現次數與字串 B 中具有相同索引的字串進行比較,然后只列印相等的字串?例如,A 的最后一個字串僅包含 2 個元素,而 B 中的一個包含 3 個元素,因此使其不相等,而其他字串在每個字串中的元素數量方面都彼此相等。
data = {
'A' : ["2,3,4,5,6,10", "3,4,5,6,7", "2,3,4", "4,5,6,7,8,9,1", "1,2"],
'B' : ["2,2,2,2,2,3", "2,2,2,2,2", "1,2,1", "1,1,1,1,1,1,1", "3,4,5"]
}
我目前想出的:
new_list_1 = []
new_list_2 = []
a = data['A']
b = [[int(x) for x in i.split(',')] for i in a]
e = data['B']
f = [[int(x) for x in i.split(',')] for i in e]
# print(f)
for x,y in zip(b, f):
if len(x) == len(y):
new_list_1.append(b)
new_list_2.append(f)
print(new_list_2)
但是,這會給出以下輸出:
[[[2, 2, 2, 2, 2, 3], [2, 2, 2, 2, 2], [1, 2, 1], [1, 1, 1, 1, 1, 1, 1], [3, 4, 5]], [[2, 2, 2, 2, 2, 3], [2, 2, 2, 2, 2], [1, 2, 1], [1, 1, 1, 1, 1, 1, 1], [3, 4, 5]], [[2, 2, 2, 2, 2, 3], [2, 2, 2, 2, 2], [1, 2, 1], [1, 1,
1, 1, 1, 1, 1], [3, 4, 5]], [[2, 2, 2, 2, 2, 3], [2, 2, 2, 2, 2], [1, 2, 1], [1, 1, 1, 1, 1, 1, 1], [3, 4, 5]]]
uj5u.com熱心網友回復:
我認為這就是你想要做的:
data = {
'A' : ["2,3,4,5,6,10", "3,4,5,6,7", "2,3,4", "4,5,6,7,8,9,1", "1,2"],
'B' : ["2,2,2,2,2,3", "2,2,2,2,2", "1,2,1", "1,1,1,1,1,1,1", "3,4,5"]
}
newlist = []
for x, y in zip(data['A'], data['B']):
if len(x.split(',')) == len(y.split(',')):
newlist.append([x, y])
print(newlist)
輸出:
[['2,3,4,5,6,10', '2,2,2,2,2,3'], ['3,4,5,6,7', '2,2,2,2,2'], ['2,3,4', '1,2,1'], ['4,5,6,7,8,9,1', '1,1,1,1,1,1,1']]
uj5u.com熱心網友回復:
鑒于您的資料為:
data = {
'A' : ["2,3,4,5,6,10", "3,4,5,6,7", "2,3,4", "4,5,6,7,8,9,1", "1,2"],
'B' : ["2,2,2,2,2,3", "2,2,2,2,2", "1,2,1", "1,1,1,1,1,1,1", "3,4,5"]
}
您可以取回一個元組串列,其中從字串轉換為串列的值的長度與通過zip()和串列理解匹配,例如:
results = [
(a, b) for (a, b) in zip(*data.values())
if len(a.split(",")) == len(b.split(","))
]
print(results)
這會給你:
[
('2,3,4,5,6,10', '2,2,2,2,2,3'),
('3,4,5,6,7', '2,2,2,2,2'),
('2,3,4', '1,2,1'),
('4,5,6,7,8,9,1', '1,1,1,1,1,1,1')
]
不使用values()產生相同結果的稍微簡單的版本是:
results = [
(a, b) for (a, b) in zip(data["A"], data["B"])
if len(a.split(",")) == len(b.split(","))
]
print(results)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/433694.html
