蟒蛇加入相当于

问题描述:

我有一本字典说..蟒蛇加入相当于

dict = { 
    'a' : 'b', 
    'c' : 'd' 
} 

在PHP中我会喜欢的东西破灭( '',$字典),并得到输出 'A,B,C,d' 我如何在Python中做到这一点?

+1

词典在Python是无序的。只是以为你想知道。 – 2011-04-29 04:46:44

+3

并且为了记录,我不明白downvotes。这是一个有着迷人答案的合法问题。 – 2011-04-29 04:55:32

+1

@Ignacio - 我也想知道。我在下面回答的动机是回答这个问题。如果我的(被认定为不雅)答案是错误的,我会理解为低估。叹息 – mishaF 2011-04-29 04:57:16

这似乎是最简单的方法:

>>> from itertools import chain 
>>> a = dict(a='b', c='d') 
>>> ','.join(chain(*a.items())) 
'a,b,c,d' 
+0

你不需要列表()在那里 – 2011-04-29 04:57:46

+0

@gnibbler,确实是固定的。 – 2011-04-29 04:59:35

+0

thx mate。所有我需要:) – 2011-04-29 06:36:42

dictList = dict.items()

这将返回所有项目的列表。

+0

这将返回**对值**(元组或其他) – 2011-04-29 05:03:18

这是不是很优雅,但工作原理:词典词条的这样一个扁平列表上

result=list() 
for ind in g: 
    result.append(ind) 
    for cval in g[ind]: 
     result.append(cval) 

使用字符串join

",".join(i for p in dict.items() for i in p) 

此外,你可能想使用OrderedDict

+0

+1 - 就像您的解决方案。 – manojlds 2011-04-29 05:01:03

a=[] 
[ a.extend([i,j]) for i,j in dict.items() ] 

要么

[value for pair in {"a": "b", "c" : "d"}.iteritems() for value in pair] 

(lambda mydict: [value for pair in mydict.iteritems() for value in pair])({"a": "b", "c" : "d"}) 

说明:

简化该例子中是从每对在mydict

编辑返回的每个值:也把一个“”加入()围绕这些。我没有看过你的问题正确

首先,错误答案:

','.join('%s,%s' % i for i in D.iteritems()) 

这个答案是错误的,因为,而在PHP 关联数组做有一个给定的顺序,词典在Python 不要。以补偿的方式是要么使用一个有序映射类型(如OrderedDict),或迫使一个明确的顺序:

','.join('%s,%s' % (k, D[k]) for k in ('a', 'c')) 

这有二次性能,但如果字典总是很小,可能不此事给你

>>> sum({'a':'b','c':'d'}.items(),()) 
('a', 'b', 'c', 'd') 

注意,dict.items()不保留顺序,以( 'C', 'd', 'A', 'b')也将是一个可能的输出

我知道这是一个古老的问题,但它也很好的说明。

原来的问题是误导。爆()不弄平在PHP关联数组,它加入的值

echo implode(",", array("a" => "b", "c" => "d")) 
// outputs b,d 

破灭()将是相同的

",".join(dict.values()) 
# outputs b,d