l******n 发帖数: 9344 | 1 【 以下文字转载自 JobHunting 讨论区 】
发信人: longtian (有人的地方,就有江湖), 信区: JobHunting
标 题: python binary string问题
发信站: BBS 未名空间站 (Fri Dec 16 14:30:41 2016, 美东)
收到这样的binary string, b'{"DATA":1,"DATA":100}
怎么转化成dict?特别是key是重复的
bow |
w***g 发帖数: 5958 | 2 你需要用json.
【在 l******n 的大作中提到】 : 【 以下文字转载自 JobHunting 讨论区 】 : 发信人: longtian (有人的地方,就有江湖), 信区: JobHunting : 标 题: python binary string问题 : 发信站: BBS 未名空间站 (Fri Dec 16 14:30:41 2016, 美东) : 收到这样的binary string, b'{"DATA":1,"DATA":100} : 怎么转化成dict?特别是key是重复的 : bow
|
l******n 发帖数: 9344 | 3 本来就是json的format,我知道可以decode成python string,然后就是key问题。我觉
得这个例子最后结果是只有data:100, 前面的值就lost了
【在 w***g 的大作中提到】 : 你需要用json.
|
e*******o 发帖数: 4654 | 4 >>> import json
>>> from multidict import MultiDict
>>> bin_str = b'{"DATA":1,"DATA":100}'
>>> json.loads(bin_str.decode('ascii'), object_pairs_hook=MultiDict)
baozi please. |
N*****m 发帖数: 42603 | 5 正想说这个
【在 e*******o 的大作中提到】 : >>> import json : >>> from multidict import MultiDict : >>> bin_str = b'{"DATA":1,"DATA":100}' : >>> json.loads(bin_str.decode('ascii'), object_pairs_hook=MultiDict) : : baozi please.
|
l******n 发帖数: 9344 | 6 非常感谢,包子马上就到
不过只有python3支持multidict,python2不行
【在 e*******o 的大作中提到】 : >>> import json : >>> from multidict import MultiDict : >>> bin_str = b'{"DATA":1,"DATA":100}' : >>> json.loads(bin_str.decode('ascii'), object_pairs_hook=MultiDict) : : baozi please.
|
N*****m 发帖数: 42603 | 7 customize your own object_pairs_hook
【在 l******n 的大作中提到】 : 非常感谢,包子马上就到 : 不过只有python3支持multidict,python2不行
|
e*******o 发帖数: 4654 | 8 multidict 不清楚
flask 肯定支持2
http://werkzeug.pocoo.org/docs/0.10/datastructures/#werkzeug.datastructures.MultiDict
【在 l******n 的大作中提到】 : 非常感谢,包子马上就到 : 不过只有python3支持multidict,python2不行
|
l******n 发帖数: 9344 | 9 这是个好主意,有没有个例子。比如
就前面那个例子怎么弄
【在 N*****m 的大作中提到】 : customize your own object_pairs_hook
|
w*x 发帖数: 518 | 10 做过一次,pythonic正解是:
python ast literal_eval |
n****l 发帖数: 1739 | 11 def to_dl(lt):
ddl = defaultdict(list)
for t in lt:
ddl[t[0]].append(t[1])
return dict(ddl)
dl = json.loads(bin_str.decode('ascii'), object_pairs_hook=to_dl)
dl['DATA'][0]
1
【在 l******n 的大作中提到】 : 这是个好主意,有没有个例子。比如 : 就前面那个例子怎么弄
|
l******n 发帖数: 9344 | 12 学习了,多谢
【在 n****l 的大作中提到】 : def to_dl(lt): : ddl = defaultdict(list) : for t in lt: : ddl[t[0]].append(t[1]) : return dict(ddl) : dl = json.loads(bin_str.decode('ascii'), object_pairs_hook=to_dl) : dl['DATA'][0] : 1
|
k*****3 发帖数: 226 | 13 不用multidict的话,如果不并行处理,把key变换下
def to_dl(lt):
ddl = defaultdict(list)
for t in lt:
if t[0] in ddl:
newkey = str(t[0]) + '0'
cnt = 0
while (newkey in ddl)
cnt = cnt + 1
newkey = str(t[0]) + str(cnt)
ddl[newkey] = t[1]
else
ddl[t[0]] = t[1]
return dict(ddl) |