如何转换元组的输入列表
how to convert input list of tuples
我知道我可以像那样将元组列表转换为字典
list_of_tuples = [("k", 167), ("z", 179), ("u", 179), ("m", 267), ("a", 445), ("l", 134)]
new_dict = {}
new=dict{list_of_tuples}
print(new)
#{'k': 167, 'z': 179, 'u': 179, 'm': 267, 'a': 445, 'l': 134}
但是当我收到用户输入时该怎么办
[("k", 167), ("z", 179), ("u", 179), ("m", 267), ("a", 445), ("l", 134)]
作为字符串
用户以字符串形式取消输入的内容
([("k", 167), ("z", 179), ("u", 179), ("m", 267), ("a", 445), ("l", 134)])
我尝试使用 Json 转换为字典但不能,因为它的元组列表
首先,将字符串转换为列表,然后您可以像这样进行字典理解:
import ast
my_list = ast.literal_eval("[("k", 167), ("z", 179), ("u", 179), ("m", 267), ("a", 445), ("l", 134)]")
d = {k:v for k,v in my_list}
使用正则表达式将元组中的(
、,
和字符串中的)
替换为{
、:
和}
分别。
>>> i = '[("k", 167), ("z", 179), ("u", 179), ("m", 267), ("a", 445), ("l", 134)]'
>>> j = re.sub(r'\(("\w"), (d+)\)', r'{:}', i)
>>> d = json.loads(j)
>>> d
[{'k': 167}, {'z': 179}, {'u': 179}, {'m': 267}, {'a': 445}, {'l': 134}]
r'\(("\w"), (d+)\)', r'{:}'
的解释:
\(
和 \)
意思是“阅读开头和括号而不是分组”
- 常规
(
和)
是分组选择,可以用\n
代替,其中n
是组的位置。这在上面的正则表达式中使用了两次,所以我们不会丢失双引号内的文本和每个元组内的数字
\w
对应代表一个词的字符序列
\d+
对应一位或多位连续数字
我知道我可以像那样将元组列表转换为字典
list_of_tuples = [("k", 167), ("z", 179), ("u", 179), ("m", 267), ("a", 445), ("l", 134)]
new_dict = {}
new=dict{list_of_tuples}
print(new)
#{'k': 167, 'z': 179, 'u': 179, 'm': 267, 'a': 445, 'l': 134}
但是当我收到用户输入时该怎么办
[("k", 167), ("z", 179), ("u", 179), ("m", 267), ("a", 445), ("l", 134)]
作为字符串
用户以字符串形式取消输入的内容
([("k", 167), ("z", 179), ("u", 179), ("m", 267), ("a", 445), ("l", 134)])
我尝试使用 Json 转换为字典但不能,因为它的元组列表
首先,将字符串转换为列表,然后您可以像这样进行字典理解:
import ast
my_list = ast.literal_eval("[("k", 167), ("z", 179), ("u", 179), ("m", 267), ("a", 445), ("l", 134)]")
d = {k:v for k,v in my_list}
使用正则表达式将元组中的(
、,
和字符串中的)
替换为{
、:
和}
分别。
>>> i = '[("k", 167), ("z", 179), ("u", 179), ("m", 267), ("a", 445), ("l", 134)]'
>>> j = re.sub(r'\(("\w"), (d+)\)', r'{:}', i)
>>> d = json.loads(j)
>>> d
[{'k': 167}, {'z': 179}, {'u': 179}, {'m': 267}, {'a': 445}, {'l': 134}]
r'\(("\w"), (d+)\)', r'{:}'
的解释:
\(
和\)
意思是“阅读开头和括号而不是分组”- 常规
(
和)
是分组选择,可以用\n
代替,其中n
是组的位置。这在上面的正则表达式中使用了两次,所以我们不会丢失双引号内的文本和每个元组内的数字 \w
对应代表一个词的字符序列\d+
对应一位或多位连续数字