2015-08-19 65 views
-6

想象一下尋找正則表達式「x是y」的代碼塊並將其存儲在某個變量中。一旦你有,你如何將它們添加到dict = {y:x, y:x, y:x,...}格式的字典? 示例 - 「一隻狗是犬」「一隻狐狸是犬」「藍色是一種顏色」 - >dict ={canine:["dog", "fox"], color:"blue"}如何將正則表達式的結果添加到Python中的字典中?

+0

能告訴你一些例子嗎? – vks

+0

@vks肯定的東西 – EXO

+0

@EXO你想用正則表達式來做這個嗎只有你可以用其他東西 – The6thSense

回答

1

如果表單總是'x是y',則可以使用split()。那麼只需檢查y是否已經在你的字典中並相應地添加。檢查下面的例子:

dict = {} 
phrases = ['dog is a canine', 'wolf is a canine', 'blue is a color'] 
for phrase in phrases: 
    x, y = phrase.split(' is a ') 
    if y not in dict: 
     dict[y] = [] 
    dict[y].append(x) 
print dict 

將打印

{ '顏色':[ '藍'], '狗':[ '狗', '狼']}

+0

抱歉,這不是因爲它可能是「一個x是y」的形式。 – EXO

2

根據給定的要求,沒有必要使用正則表達式 - 它有點兒費用。您可以通過使用內置的setdefault()的append()分裂()列表理解幾乎一行代碼解決您的任務。

input = [ "a dog is a canine", "a fox is a canine", "blue is a color"] 
output = {} 
[output.setdefault(v, []).append(k) for k,v in (s.split(' is a ') for s in input)] 
print(output) 

{ '色': '藍'], '犬': '狗', '狐狸']}

+0

是的,但是我不想要那裏的'a'。 – EXO

+0

如果輸入字符串中總是有'a',則可以簡單地從它們中去掉兩個第一個符號:[output.setdefault(v,[])。append(k)for k,v in(s [2:]。split( 'is a')for s in input)]你可以注意到s [2:],這意味着'片'字符串後面的2個字符 – svfat

+0

我可以私下和你談談嗎?我希望創造一些東西,但是我是一個哲學家而不是編碼員,而且我沒有編碼技能來完成甚至開始我的項目。 – EXO

相關問題