2017-06-30 88 views
1

我剛纔遇到的Perl代碼類似於以下:如何編寫python來替換下一個perl代碼?

my @keys = qw/ 1 2 3 /; 
my @vals = qw/ a b c /; 
my %hash; 
@hash{@keys} = @vals; 

此代碼填充給定鍵的列表和值的列表的關聯數組。例如,上面的代碼創建了以下數據結構(以JSON表示):

{ 
    "1": "a", 
    "2": "b", 
    "3": "c" 
} 

如何在Python中執行此操作?

回答

1

像這樣:

import json 

keys = [1, 2, 3] 
vals = ['a', 'b', 'c'] 
hash = dict(zip(keys, vals)) 

json.dumps(hash) 
=> '{"1": "a", "2": "b", "3": "c"}' 
1

這JSON是相當多的與Python一個通曉多國語言。一旦你將它分配給一個名稱,但它不會成爲一個多邊形。

hf = { 
    "1": "a", 
    "2": "b", 
    "3": "c" 
} 

您還可以將項目迭代對齊到字典中。

letters = ('a', 'b', 'c',) 
numbers = ('1', '2', '3',) 
hf = { n : l for n, l in zip(numbers, letters) } 
+1

或'hash = dict(zip(數字,字母))' –

+0

當然,可能是comp堅持,對麻將功能。 –

1

你可以這樣做:

>>> keys='123' 
>>> vals='abc' 
>>> dict(zip(keys,vals)) 
{'1': 'a', '3': 'c', '2': 'b'} 

(Python的注意事項:字符串是可迭代的,所以list('abc')my @vals = qw/ a b c /;在Perl大致相當於)

然後如果你想JSON:

>>> import json 
>>> json.dumps(dict(zip(keys,vals))) 
'{"1": "a", "3": "c", "2": "b"}'